Lập trình hướng đối tượng cho người chưa biết php. Nguyên tắc cơ bản của lập trình hướng đối tượng trong PHP

Ngày 11 tháng 3 năm 2010 lúc 11:37 sáng

OOP với các ví dụ (phần 1)

  • Quy trình đào tạo CNTT

Theo ý muốn của số phận, tôi phải đọc một khóa học đặc biệt về mẫu thiết kế tại một trường đại học. Khóa học đặc biệt là bắt buộc nên học viên đến với tôi rất khác nhau. Tất nhiên, trong số đó cũng có những lập trình viên đang hành nghề. Nhưng thật không may, hầu hết mọi người đều gặp khó khăn trong việc hiểu các thuật ngữ cơ bản của OOP.

Để làm điều này, tôi đã cố gắng giải thích ít nhiều bằng các ví dụ trực tiếp các khái niệm cơ bản OOP (lớp, đối tượng, giao diện, trừu tượng hóa, đóng gói, kế thừa và đa hình).

Phần đầu tiên bên dưới là về các lớp, đối tượng và giao diện.
minh họa sự đóng gói, đa hình và kế thừa

Khái niệm cơ bản về OOP

Lớp học
Hãy tưởng tượng rằng bạn đang thiết kế một chiếc ô tô. Bạn biết rằng một chiếc ô tô phải có động cơ, hệ thống treo, hai đèn pha, 4 bánh, v.v. Bạn cũng biết rằng ô tô của bạn phải có khả năng tăng tốc và giảm tốc độ, rẽ và đi lùi. Và quan trọng nhất, bạn biết chính xác động cơ và bánh xe tương tác như thế nào, trục cam và trục khuỷu chuyển động theo quy luật nào, cũng như cách thiết kế bộ vi sai. Bạn tự tin vào kiến ​​thức của mình và bắt đầu thiết kế.

Bạn mô tả tất cả các bộ phận tạo nên chiếc xe của bạn, cũng như cách các bộ phận này tương tác với nhau. Ngoài ra, bạn còn mô tả những gì người dùng phải làm để khiến máy phanh hoặc bật chùm tia caođèn pha Kết quả công việc của bạn sẽ là một bản phác thảo. Bạn vừa phát triển cái được gọi là OOP Lớp học.

Lớp học là một cách mô tả một thực thể xác định trạng thái và hành vi phụ thuộc vào trạng thái này, cũng như các quy tắc để tương tác với thực thể này (hợp đồng).

Từ quan điểm lập trình, một lớp có thể được coi là một tập hợp dữ liệu (trường, thuộc tính, thành viên lớp) và các hàm để làm việc với chúng (các phương thức).

Từ quan điểm của cấu trúc chương trình, một lớp là một kiểu dữ liệu phức tạp.

Trong trường hợp của chúng tôi, lớp sẽ hiển thị một thực thể - một chiếc ô tô. Các thuộc tính của lớp sẽ là động cơ, hệ thống treo, thân xe, bốn bánh, v.v. Các phương pháp phân lớp sẽ là “mở cửa”, “nhấn bàn đạp ga” và “bơm một phần xăng từ bình xăng vào động cơ”. Hai phương thức đầu tiên có sẵn để các lớp khác thực thi (đặc biệt là lớp “Trình điều khiển”). Cái sau mô tả các tương tác trong lớp và người dùng không thể truy cập được.

Hơn nữa, mặc dù thực tế là từ “người dùng” có liên quan đến Solitaire và “ Phần mềm soạn thảo văn bản", chúng tôi sẽ coi những lập trình viên sử dụng lớp của bạn là người dùng, bao gồm cả chính bạn. Chúng ta sẽ gọi người là tác giả của lớp là nhà phát triển.

Một đối tượng
Bạn đã làm rất tốt và những chiếc máy được phát triển theo bản vẽ của bạn đang lăn bánh khỏi dây chuyền lắp ráp. Họ đây, đang đứng thành hàng ngay ngắn trong sân nhà máy. Mỗi người trong số họ lặp lại chính xác bản vẽ của bạn. Tất cả các hệ thống tương tác chính xác như bạn thiết kế. Nhưng mỗi chiếc xe là duy nhất. Chúng đều có số thân và số máy, nhưng những con số này đều khác nhau, xe khác nhau về màu sắc, thậm chí một số còn có mâm đúc thay vì mâm đúc. Những chiếc xe này về cơ bản là đối tượng của lớp bạn.

Đối tượng (ví dụ) là một đại diện cá nhân của một lớp có trạng thái và hành vi cụ thể hoàn toàn do lớp đó xác định.

Nói bằng ngôn ngữ đơn giản, một đối tượng có các giá trị thuộc tính cụ thể và các phương thức hoạt động trên các giá trị đó dựa trên các quy tắc được xác định trong lớp. TRONG trong ví dụ này, nếu một lớp là một chiếc ô tô trừu tượng nào đó từ “thế giới ý tưởng”, thì đối tượng là một chiếc ô tô bê tông đứng dưới cửa sổ của bạn.

Giao diện
Khi chúng ta bước tới máy pha cà phê hoặc ngồi sau tay lái, chúng ta bắt đầu tương tác với chúng. Thông thường, sự tương tác xảy ra bằng cách sử dụng một tập hợp các yếu tố nhất định: khe nhận tiền, nút chọn đồ uống và ngăn pha chế ly trong máy pha cà phê; vô lăng, bàn đạp, cần số trên ô tô. Luôn luôn có một số bộ giới hạnđiều khiển mà chúng ta có thể tương tác.

Giao diện là một tập hợp các phương thức lớp có sẵn để các lớp khác sử dụng.

Rõ ràng, giao diện của một lớp sẽ là tập hợp tất cả các phương pháp công cộng cùng với một tập các thuộc tính công khai. Về cơ bản, một giao diện chỉ định một lớp, xác định rõ ràng mọi thứ hành động có thể vượt qua nó.
Một ví dụ điển hình về giao diện sẽ là bảng điều khiển car, cho phép bạn gọi các phương thức như tăng tốc độ, phanh, rẽ, sang số, bật đèn pha, v.v. Đó là tất cả các hành động mà một lớp khác (trong trường hợp của chúng tôi là người lái xe) có thể thực hiện khi tương tác với ô tô.

Khi mô tả một giao diện lớp, điều quan trọng là phải đạt được sự cân bằng giữa tính linh hoạt và tính đơn giản. Một lớp có giao diện đơn giản sẽ dễ sử dụng nhưng sẽ có những vấn đề không thể giải quyết được. Đồng thời, nếu giao diện linh hoạt thì rất có thể nó sẽ bao gồm đủ phương pháp phức tạp Với một lượng lớn các thông số sẽ cho phép bạn làm được nhiều việc, nhưng việc sử dụng nó sẽ gặp rất nhiều khó khăn và có nguy cơ mắc sai lầm khi trộn lẫn thứ gì đó.

Ví dụ giao diện đơn giản một chiếc xe có hộp số tự động có thể phục vụ. Bất kỳ cô gái tóc vàng nào đã hoàn thành khóa học lái xe kéo dài hai tuần sẽ có thể thành thạo cách vận hành nó rất nhanh. Mặt khác, để thành thạo việc điều khiển một chiếc máy bay chở khách hiện đại, bạn cần phải luyện tập chăm chỉ trong vài tháng, thậm chí nhiều năm. Tôi sẽ không muốn ngồi trên chiếc Boeing do một người có hai tuần kinh nghiệm bay điều khiển. Mặt khác, bạn sẽ không bao giờ có được một chiếc ô tô cất cánh và bay từ Moscow đến Washington.

Từ tác giả: lập trình chuyên nghiệp hiện đại đơn giản là không thể tưởng tượng được nếu không có lập trình hướng đối tượng, điều này đã bí mật trở thành một loại tiêu chuẩn ngôn ngữ cấp cao lập trình và tất nhiên PHP cũng không ngoại lệ. Nhưng điều đó xảy ra là việc chuyển đổi từ phong cách lập trình thủ tục sang phong cách lập trình dựa trên đối tượng đi kèm với một số khó khăn đối với người mới bắt đầu, vì vậy hôm nay chúng ta sẽ xem xét những điều cơ bản về OOP PHP.

Đầu tiên, chúng ta hãy xem xét những ưu điểm chính của cách tiếp cận hướng đối tượng để hiểu tại sao nó lại trở nên phổ biến đến vậy.

Mã của cách tiếp cận hướng đối tượng khá dễ hiểu và dễ đọc và rất tuyệt vời để thực hiện các dự án quy mô lớn và rất phức tạp.

Các ứng dụng được viết bằng phương pháp lập trình này dễ dàng được hiện đại hóa và mở rộng.

Các ứng dụng được thiết kế phù hợp bao gồm mô-đun riêng lẻ, có nghĩa là, nếu cần, chúng có thể được cải tiến và cập nhật nhanh chóng, điều này làm tăng tốc độ phát triển lên nhiều bậc độ lớn.

Bây giờ chính điểm mạnh phong cách mã hóa được đề cập đã được xác định, bạn có thể đi thẳng vào vấn đề bài học này.

Vì vậy, cơ sở của lập trình hướng đối tượng trong PHP là nguyên tắc liên kết dữ liệu và các hàm thao tác chúng thành các đối tượng tương ứng. Điều này hơi khác so với cách tiếp cận thủ tục thông thường, trong đó các phần tử tương tự được xác định riêng biệt với nhau. Nghĩa là, các đối tượng chứa một số thông tin được lưu trữ trong các thuộc tính của nó (đó là tên gọi của các biến đối tượng) và bộ cụ thể các hành động được mô tả trong các phương thức của nó (về cơ bản là các hàm thông thường). Trong trường hợp này, các phương thức, theo quy luật, trong công việc của họ hoạt động trên dữ liệu được lưu trữ trong các thuộc tính, bao hàm cả việc đọc, ghi và thay đổi.

Theo đó, có thể nói nền tảng của phương pháp lập trình hướng đối tượng trong PHP là làm việc với các đối tượng hoặc sử dụng chúng để thao tác dữ liệu.

Trong trường hợp này, đối tượng được hình thành từ một lớp được xác định trước đó và lớp sau mô tả đầy đủ cấu trúc của nó và hoạt động như một loại mẫu. Nói cách khác, lớp mô tả các thuộc tính và phương thức của các đối tượng được tạo trong tương lai. Và điều này có thể được nhìn thấy trong ví dụ sau.

lớp Khách hàng ( public $name; protected $orders; public function __construct($name, $orders) ( $this->name = $name; $this->orders = $orders; ) public function getName() ( return $this ->name; ) ) $customer = Khách hàng mới("Ben", array("id" => 10)); echo $customer->getName();

lớp khách hàng(

tên công khai;

đơn hàng $ được bảo vệ;

chức năng công cộng __construct ($name, $orders) (

$this -> name = $name ;

$this -> order = $orders ;

hàm công khai getName() (

trả lại $this -> tên ;

$customer = Khách hàng mới("Ben", array("id" => 10));

echo $khách hàng -> getName();

Khi triển khai một thể hiện của một lớp (nghĩa là tạo một đối tượng mới bằng cách sử dụng một lớp quan tâm cụ thể), một đối tượng mới sẽ được hình thành và các thuộc tính được mô tả trong lớp cũng được xác định. Ngoài ra, một phương thức đặc biệt gọi là __construct() được khởi chạy để thực thi, tất nhiên trừ khi nó được mô tả trong cấu trúc lớp. Như bạn có thể thấy, để tạo một đối tượng, nó được sử dụng từ khóa mới theo sau là tên lớp. Trong dấu ngoặc đơn, nếu cần, các đối số sẽ được truyền cho phương thức trên, theo quy tắc, xác định một số dữ liệu ban đầu cho đối tượng trong tương lai.

Trong ví dụ trên, ngoài việc tạo một đối tượng, phương thức getName() được gọi và giá trị mà nó trả về sẽ được hiển thị. Tất nhiên, do hoạt động của tập lệnh, chúng ta sẽ thấy đầu ra của tên người dùng - “Ben”, bởi vì tên này được chuyển làm đối số đầu tiên cho phương thức hàm tạo, trong đó nó được ghi vào thuộc tính lớp bên dưới tên tên. Theo đó, phương thức trên trả về giá trị của tài sản này.

Đồng thời, không ai cấm bạn tạo một đối tượng tương tự khác từ lớp được mô tả trước đó:

$customer2 = Khách hàng mới("Sem", array("id" => 15)); echo $customer2->getName();

$customer2 = Khách hàng mới("Sem", array("id" => 15));

echo $customer2 -> getName();

Trong trường hợp này, trên màn hình chúng ta sẽ thấy tên của một người dùng hoàn toàn khác – “Sem”. Vì vậy, về cơ bản chúng tôi đã tạo một đối tượng hoàn toàn khác với cùng một mẫu - một lớp. Đồng thời, của đối tượng này, dữ liệu ban đầu hoàn toàn khác, vẫn được hình thành bởi phương thức khởi tạo, có nghĩa là hành vi của nó, được xác định bởi các phương thức, cũng sẽ khác nhau.

Xin lưu ý rằng các thuộc tính của một lớp và các phương thức của nó chỉ có thể được sử dụng với một đối tượng cụ thể - đây chính xác là những gì có thể thấy trong ví dụ, và nếu không có nó, chúng hoàn toàn vô dụng khi làm việc bên ngoài lớp, bởi vì bên trong lớp lớp, tất nhiên, chúng có thể được sử dụng trong mã của các phương thức của nó. Hơn nữa, việc truy cập vào các phần tử trên của đối tượng được thực hiện thông qua bộ đặc biệt ký hiệu “->” (mũi tên), trước đó bạn cần chỉ ra đối tượng quan tâm hoặc con trỏ đối tượng - từ khóa $this. Con trỏ đối tượng $this được sử dụng trong mã của các phương thức trực tiếp bên trong lớp để truy cập các thuộc tính hoặc phương thức của nó.

Và một lần nữa, chúng ta thấy rằng cơ sở phát triển OOP trong PHP là làm việc với các đối tượng và điều hay là chúng ta mô tả lớp một lần, có nghĩa là chúng ta hình thành một tập hợp dữ liệu nhất định và chức năng cần thiết. Và sau đó chúng tôi tạo các đối tượng, mỗi đối tượng, tùy thuộc vào dữ liệu ban đầu, trên thực tế sẽ hoàn toàn độc đáo.

Từ những điều trên, lớp, trên cơ sở các đối tượng sẽ được tạo, mô tả dữ liệu và chức năng của một thực thể nhất định của dự án trong tương lai, ví dụ: làm việc với người dùng, trang, menu, địa chỉ, v.v. Và tất nhiên, nếu có một số thực thể như vậy thì cần phải tạo một số lớp, điều đó có nghĩa là ít nhất một đối tượng sẽ được tạo cho mỗi thực thể đó. Mặc dù không phải lúc nào cũng vậy, đôi khi một số lớp được tạo ra làm lớp cha cho một số lớp con nhất định, có nghĩa là chúng đóng vai trò lưu trữ một số chức năng chung, điều này ngụ ý một cách tự nhiên việc tạo ra toàn bộ hệ thống phân cấp các lớp cho dự án trong tương lai. Nhưng đây là một chủ đề hoàn toàn khác và không phù hợp với phạm vi của bài viết hiện tại.

Trên thực tế, ở đây chúng tôi đã xem xét ngắn gọn những điều cơ bản về lập trình hướng đối tượng trong PHP. Chắc chắn, loại này lập trình đòi hỏi phải chú ý nhiều hơn một bài viết nếu bạn muốn thực sự hiểu rõ về nó và sử dụng nó trong công việc của mình. Chủ đề này sẽ được thảo luận chi tiết hơn trong khóa học cao cấp.

Chúc bạn mọi điều tốt đẹp nhất và viết mã vui vẻ!!!

Chúng tôi sẽ đề cập đến các khái niệm như lập trình hướng đối tượng, các lớp PHP, hàm tạo PHP, hàm hủy PHP, phép thuật Phương thức PHP vân vân. Hướng dẫn này dành cho người mới bắt đầu và những lập trình viên có kinh nghiệm muốn học PHP OOP từ cấp độ cơ bản.

Một trong những thay đổi lớn nhất trong PHP 5 là việc đưa vào hoàn toàn mô hình đối tượng, giúp cải thiện năng suất. Một số tính năng mới quan trọng được thêm vào trong PHP 5 bao gồm các phương thức cuối cùng và trừu tượng, các lớp, giao diện, nhân bản và các phương thức ma thuật. Chúng ta sẽ xem xét hướng dẫn này Các ví dụ về OOP PHP về cách sử dụng từng cái.

Trong lập trình hướng đối tượng, một đối tượng được xử lý giống như cách tham chiếu hoặc con trỏ. Điều này có nghĩa là mỗi biến mới chứa một tham chiếu đến đối tượng chứ không phải là bản sao của toàn bộ đối tượng.

Khái niệm khó hiểu nhất là những điều cơ bản về OOP, vì chúng khác với lập trình PHP thông thường. Nhưng một khi bạn hiểu được các nguyên tắc cơ bản, bản thân mô hình sẽ trở nên đơn giản và dễ hiểu đối với bạn.

OOP trong PHP là gì?

Vì thuật ngữ lập trình hướng đối tượng bắt đầu bằng từ “đối tượng”, nên chúng ta có thể nói rằng đó là một kiểu lập trình đặc biệt trong đó các đối tượng được tạo và sử dụng.

Đây là lời giải thích về PHP OOP dành cho người chưa biết. Hãy nhìn thế giới xung quanh chúng ta, nó có rất nhiều đồ vật. Mặt trời, mặt trăng, ô tô, cây cối, nhà cửa, v.v. và như thế. Tất cả đều là đối tượng, chúng có thuộc tính và chức năng. Trong quá trình suy nghĩ, chúng ta hoạt động với các đồ vật. Khi chúng ta nói về một chiếc ô tô, bạn không nghĩ về bánh xe, động cơ, ghế ngồi, cửa ra vào, bạn nghĩ về chiếc ô tô như chính nó. Nói một cách đơn giản, bạn nghĩ về chủ thể hoặc đối tượng. Hướng đối tượng là sự biểu diễn các phần tử dưới dạng đối tượng trong lập trình.

Chiếc xe là một vật thể. Nó có các thuộc tính về màu sắc, kích thước, trọng lượng và chức năng di chuyển. Bất kỳ đối tượng nào không có chức năng sẽ vô dụng. Trong OOP, lập trình viên sử dụng các đối tượng; mọi đối tượng đều có một số thuộc tính và chức năng. Nói chung, lập trình bao gồm việc xây dựng các mô-đun bằng cách sử dụng các đối tượng.

Một định nghĩa đơn giản về lập trình hướng đối tượng:

Lập trình hướng đối tượng là lập trình dựa trên các đối tượng chứa dữ liệu (thuộc tính) và phương thức (chức năng) xử lý dữ liệu này. Đối tượng là một loại dữ liệu được xác định bởi người lập trình và sự tương tác giữa các đồ vật khác nhau cũng do người lập trình quyết định.

Nói cách khác, OOP cho phép người lập trình nhóm các tác vụ giống nhau thành các lớp, lớp có thể chứa dữ liệu và các hàm truy cập dữ liệu đó, có liên quan với nhau.

OOP cơ bản trong PHP giúp bạn phát triển mã dễ bảo trì và quản lý hơn. Mã càng rõ ràng và dễ đọc thì càng có nhiều khả năng được sử dụng lại. Kết quả là, các mẫu thiết kế có thể được áp dụng cho hệ thống. Trong OOP, các mô-đun được tạo và sử dụng theo yêu cầu. Với sự trợ giúp của lập trình hướng đối tượng trong PHP, chúng ta có thể tạo ứng dụng cho các trang web có cấu trúc mô-đun.

Các thuật ngữ quan trọng trong hướng dẫn PHP OOP:

Dưới là định nghĩa chung một số điều khoản quan trọng, thường được sử dụng trong PHP hướng đối tượng.

Lớp học

Trong PHP OOP, lớp là kiểu dữ liệu do người lập trình xác định. Lớp chứa dữ liệu và các hàm để làm việc với dữ liệu này. Dữ liệu và chức năng có ID truy cập riêng. Điều này có nghĩa là chúng không thể nhìn thấy bên ngoài lớp học. Lớp là một mẫu hoặc mẫu mà từ đó có thể tạo ra bao nhiêu bản sao hoặc phiên bản nếu cần.

Một đối tượng

Một đối tượng còn được gọi là một thể hiện. Khi một thể hiện của một lớp được cài đặt, một đối tượng sẽ được tạo. Nếu một lớp là một mẫu thì đối tượng là sản phẩm cuối cùng được tạo bằng mẫu đó. Khi một lớp đã được định nghĩa, nhiều đối tượng có thể được tạo từ nó.

Biến thành viên

Các biến được định nghĩa trong một lớp được gọi là biến thành viên. Thực chất đó là dữ liệu chứa trong lớp này, nó chỉ có thể được thay đổi bởi các hàm của lớp này. Thông thường, các biến thành viên chỉ hiển thị với lớp đó và ẩn khỏi các lớp khác.

Hàm thành viên

Các hàm được định nghĩa trong một lớp được gọi là các hàm thành viên. Chúng cũng không được nhìn thấy bởi các lớp khác. Chúng được sử dụng để thay đổi các biến thành viên để truy cập dữ liệu đối tượng.

Người xây dựng

Hàm tạo là một loại hàm thành viên đặc biệt. Khi một lớp được thiết lập, một đối tượng được tạo, hàm này sẽ được gọi tự động và được gán giá trị ban đầu các biến lớp.

Hàm hủy diệt

Đây là một loại hàm đặc biệt được gọi tự động khi một đối tượng bị xóa.

Di sản

Trong PHP 5 OOP, kế thừa là quá trình trong đó một lớp (lớp con) nhận tất cả các thuộc tính và chức năng của một lớp khác (siêu lớp).

Siêu đẳng cấp

Còn được gọi là lớp cơ sở hoặc lớp cha - được kế thừa bởi một hoặc nhiều lớp con.

Lớp con

Là lớp con hoặc lớp dẫn xuất, lớp con kế thừa từ lớp cha.

Đa hình

Đây là một hiện tượng trong OOP trong đó một hàm duy nhất có thể được sử dụng cho nhiều mục đích.

đóng gói

Một trong những khái niệm quan trọng nhất trong lập trình hướng đối tượng. Dữ liệu và các chức năng hoạt động với dữ liệu này được kết nối với nhau và các chức năng khác không thể nhìn thấy được.

Trừu tượng

Tính trừu tượng có nghĩa là chi tiết triển khai của các hàm hoặc lớp không được hiển thị.

, có nghĩa là các hàm có cùng tên, Nhưng số lượng khác nhau các đối số được thực hiện khác nhau.

Các lớp và đối tượng:

Lớp và đối tượng được sử dụng rộng rãi đồng nghĩa trong lập trình hướng đối tượng, nhưng về cốt lõi, chúng rất khác nhau. Một lớp đại diện cho một mẫu, mẫu hoặc khuôn và một đối tượng là một sản phẩm hoặc bộ phận được đúc từ mẫu hoặc khuôn cụ thể đó.

Hãy lấy một ngôi nhà làm ví dụ. Lớp học là nền tảng của ngôi nhà; nó có kích thước, hình dạng, số lượng cửa, lối đi, v.v. Nhưng đây chỉ là một dự án chứ không phải ngôi nhà. Khi một ngôi nhà vật chất được xây dựng dựa trên thông tin có trong bản vẽ, nó là một vật thể.

Trước đó, vật thể là một đống gỗ, gạch, xi măng, v.v., từ đó một ngôi nhà hoặc vật thể được xây dựng theo thông tin trong kế hoạch:

Một lớp trong PHP OOP là một kế hoạch hoặc mẫu mà theo đó một phiên bản của một lớp được cài đặt và một đối tượng được tạo ra. Khi lớp đã được tạo, chúng ta có thể tạo bao nhiêu đối tượng tùy thích. Trong hình trên, năm đối tượng (ngôi nhà) được tạo từ một lớp (sơ đồ). Một đối tượng sẽ luôn tuân theo các hướng dẫn được đưa ra trong lớp được sử dụng để tạo ra nó.

Ưu điểm của OOP trong PHP:

  1. Cải thiện kiến ​​trúc và mã sạch hơn

PHP hướng đối tượng được phân loại tốt hơn và dễ dàng đóng gói, cho phép bạn chỉ định kiến ​​trúc tối ưu. Thông thường mỗi lớp được lưu trong một tập tin riêng biệt. Ngôn ngữ thủ tục được đặc trưng bởi mã phức tạp rất khó đọc hoặc khó hiểu. Trong OOP, bằng cách triển khai các đối tượng chứa dữ liệu riêng tư với định nghĩa rõ ràng về mối quan hệ giữa các đối tượng, mã sẽ dễ đọc và rõ ràng.

  1. Tái sử dụng

Lập trình hướng đối tượng giúp mã có thể tái sử dụng được. Các đối tượng được tạo một lần có thể được sử dụng nhiều lần. Các chương trình có thể được xây dựng bằng cách kết hợp các mô-đun làm việc thay vì viết mọi thứ từ đầu. Điều này tiết kiệm thời gian và cải thiện năng suất.

  1. Dễ dàng bảo trì và cập nhật

Các đối tượng có dữ liệu và chức năng riêng, đồng thời toàn bộ cấu trúc của chúng được nén và nén, giúp bạn dễ dàng thực hiện các thay đổi đối với mã. Lập trình thủ tục thông thường tạo ra mã trong đó rất khó tìm ra điểm để thực hiện thay đổi. Trong PHP OOP, chúng ta có thể thêm một thuộc tính mới và sau đó thêm các phương thức liên quan để thao tác với thuộc tính đó.

  1. đóng gói

Đóng gói có nghĩa là các giá trị của các biến của đối tượng không thể nhìn thấy được từ bên ngoài, do đó bảo mật dữ liệu được thực hiện. Nhưng nếu có nhu cầu, dữ liệu có thể được truy cập bằng cách sử dụng công cụ sửa đổi truy cập. Để tạo chương trình an toàn dữ liệu và các hàm thành viên trong một lớp có thể bị ẩn khỏi các lớp khác. Khi một đối tượng được tạo, không cần thông tin triển khai để sử dụng nó.

  1. Di sản

Lớp kế thừa có tất cả các đặc điểm lớp cha, sau đó các đặc tính riêng của nó được thêm vào. Lớp con kế thừa các biến và phương thức của lớp cha. Chúng ta có thể mở rộng việc sử dụng các lớp hiện có và loại bỏ những mã không cần thiết.

PHP là một trong những ngôn ngữ phổ biến nhất ngôn ngữ kịch bản lập trình. Gần 60% máy chủ web sử dụng PHP Hàng triệu trang web và ứng dụng web được phát triển bằng PHP mỗi tháng.

PHP ban đầu được phát triển dưới dạng thay thế dễ dàng Perl, và chỉ trong vài năm nó đã trở nên cực kỳ mạnh mẽ và phổ biến. Ngôn ngữ PHP, bản thân nó rất giống với ANSI C.
Một trong những lý do khiến PHP trở nên phổ biến là thời gian học tập ngắn của nó.

Học PHP hoàn toàn không khó, đặc biệt nếu bạn đã quen với cú pháp Java hoặc C.

Vậy làm thế nào để viết Tập lệnh PHP khá đơn giản, bất kỳ ai cũng có thể viết mã PHP mà không cần tuân theo bất kỳ quy ước nào và trộn lớp trình bày với logic nghiệp vụ (đây là một trong những lý do chính tồn tại số lượng lớn dự án không được quản lý). Bởi vì PHP không nhất thiết phải có các quy ước mã hóa nghiêm ngặt nên theo năm tháng khi dự án ngày càng lớn hơn, nó sẽ trở thành một ứng dụng khổng lồ, không thể quản lý được.

OOP hoặc Lập trình hướng đối tượng được sử dụng tốt trong thực hành lập trình để tạo các dự án có thể quản lý dễ dàng hơn.
Cách tiếp cận thủ tục bao gồm việc viết Mã chương trình không sử dụng đồ vật. Lập trình thủ tục bao gồm việc viết mã có hoặc không có các thủ tục.

OOP đào tạo bất kỳ ngôn ngữ lập trình nào để tạo ra mã chương trình tốt hơn và được sử dụng để tạo ra mã chương trình tốt hơn. hiệu suất cao và viết dự án lớn, mà không sợ bị nhầm lẫn trong cách quản lý của mình. OOP cung cấp cho bạn khả năng tạo các đối tượng có thể tái sử dụng để bạn hoặc các nhà phát triển khác có thể sử dụng chúng trong dự án của họ mà không cần phải thiết kế lại nhiều lần. OOP loại bỏ các rào cản và sự phức tạp trong việc viết và quản lý các ứng dụng lớn.

PHP cho phép chúng ta viết ứng dụng theo 2 cách khác nhau, cách thứ nhất là hướng thủ tục và cách thứ hai là hướng đối tượng. Nếu bạn vẫn không hiểu sự khác biệt giữa hai cách tiếp cận này, hãy xem xét các đoạn mã này - cùng một ví dụ được viết theo các cách tiếp cận khác nhau.

Thủ tục:

$user_input = $_POST['field'];
$filtered_content = bộ lọc($user_input); // lọc đầu vào của người dùng
mysql_connect("dbhost", "dbuser", "dbpassword"); // cơ sở dữ liệu
mysql_select_db("dbname");
$sql = "một số truy vấn";
$kết quả = mysql_query($sql);
trong khi ($data = mysql_fetch_assoc())
{
quá trình ($ dữ liệu);
}
process_user_input($filtered_content);

Và đây là đoạn mã tương tự sử dụng OOP:

$input_filter = bộ lọc mới();
$input_filter->filter_user_input(); // lọc đầu vào của người dùng
$db = dal mới("mysql"); //lớp truy cập dữ liệu
$db->connect($dbconfig);//chúng tôi đang sử dụng mysql
$result = $db->execute($sql);
ReportGenerator::makereport($result); //xử lý dữ liệu
$model = Postmodel mới($filter->get_filtered_content());
$model->insert();

Nếu để ý kỹ 2 đoạn code này, bạn sẽ nhận thấy code sử dụng OOP dễ đọc và dễ hiểu hơn.

Mã với OOP được tổ chức tốt hơn vì nó rõ ràng đối tượng nào được xử lý bằng cái gì. Các ứng dụng lớn được viết bằng cách sử dụng phương pháp thủ tục gần như không thể nhận biết được sau khi một số phiên bản được phát hành. Tất nhiên, bạn có thể tuân theo các quy tắc nghiêm ngặt để viết mã chương trình, nhưng chúng được hàng triệu nhà phát triển chấp thuận, những người biết rằng điều này cuối cùng sẽ không mang lại cho bạn khả năng kiểm soát và khả năng sử dụng dự án nếu bạn không sử dụng OOP trong chương trình của mình.
Gần như tất cả ứng dụng lớn viết bằng hướng đối tượng
tiếp cận.

Dựa vào những điều trên, chúng ta có thể rút ra những ưu điểm của việc sử dụng OOP:

OOP được tạo ra để giúp cuộc sống của các nhà phát triển trở nên dễ dàng hơn. Sử dụng OOP, bạn có thể chia các vấn đề lớn của mình thành các vấn đề nhỏ dễ giải quyết hơn nhiều.
Yêu cầu chính của OOP: làm mọi thứ bạn muốn làm đối tượng. Đối tượng là những đoạn mã nhỏ riêng biệt có thể kết hợp dữ liệu và thuộc tính với nhau. Trong ứng dụng, tất cả các đối tượng đều tương tác với nhau.

OOP có thể được coi là tốt hơn với các mặt khác nhau, đặc biệt khi thời gian phát triển và quá trình phát triển tiếp theo của ứng dụng rất quan trọng đối với bạn.
Những ưu điểm chính của việc sử dụng OOP có thể được thể hiện như sau:

* Tái sử dụng: Đối tượng là một đối tượng logic có một tập hợp các thuộc tính và phương thức và có thể tương tác với các đối tượng khác. Một đối tượng có thể hoàn toàn độc lập hoặc có thể phụ thuộc vào các đối tượng khác. Một đối tượng thường được tạo ra để giải quyết các vấn đề cụ thể. Do đó, khi các nhà phát triển khác gặp phải vấn đề tương tự, họ có thể đưa lớp của bạn vào dự án của họ và sử dụng nó mà không sợ nó làm gián đoạn quá trình phát triển của họ. Điều này tránh DRY, viết tắt của Đừng lặp lại chính mình. Trong lập trình thủ tục hoặc mô-đun, tái sử dụng chỉ có thể ở dạng tổng hợp.

* Tái cấu trúc: Khi bạn cần sử dụng tính năng tái cấu trúc trong một dự án, OOP mang lại cho bạn những lợi thế tối đa, vì tất cả các đối tượng đều là các phần tử nhỏ và chứa các thuộc tính cũng như phương thức của chúng như một phần của chính chúng. Điều này làm cho việc tái cấu trúc tương đối dễ sử dụng.

* Khả năng mở rộng: Nếu bạn cần mở rộng chức năng của dự án, bạn có thể đạt được kết quả tốt nhất sử dụng OOP. Một trong những chức năng chính của OOP là khả năng mở rộng. Bạn có thể sử dụng tái cấu trúc đối tượng để thêm chức năng. Bằng cách làm việc này, bạn vẫn có thể tiết kiệm
khả năng tương thích trước đó của đối tượng - do đó bạn có thể làm việc tốt với mã cũ. Hoặc bạn có thể mở rộng đối tượng và tạo một đối tượng hoàn toàn mới chứa mọi thứ tính chất cần thiết và các phương thức của đối tượng cha mà từ đó đối tượng mới được tạo ra, sau đó thêm các hàm mới vào nó. Đây được gọi là “kế thừa” và là một tính năng rất quan trọng của OOP.

* Ủng hộ: mã hướng đối tượng dễ bảo trì hơn vì
nó tuân theo các quy ước mã hóa rất nghiêm ngặt và được viết theo cách tự giải thích.
Ví dụ: khi nhà phát triển thêm, làm lại hoặc gỡ lỗi mã, anh ta có thể dễ dàng tìm thấy cấu trúc bên trong của mã và thỉnh thoảng duy trì mã đó. Hơn nữa, khi có một nhóm các nhà phát triển OOP làm việc trong môi trường của bạn, điều đó có thể giải pháp tốt nhất vì bạn có thể phân phối mã của mình giữa các thành viên trong nhóm sau khi chia mã thành các phần nhỏ. Những bộ phận nhỏ này có thể được thiết kế như đồ vật riêng lẻ, do đó các nhà phát triển có thể làm việc gần như độc lập với nhau. Cuối cùng, việc kết hợp tất cả các phần vào một ứng dụng sẽ không khó.

* Hiệu quả: Ý tưởng về OOP thực sự được phát triển để tăng hiệu quả và giảm bớt quá trình phát triển. Một số mẫu thiết kế được phát triển để tạo ra mã tốt và hiệu quả hơn.
Hơn nữa, trong OOP, bạn có thể suy nghĩ về các quyết định của mình một cách thuận tiện hơn so với cách tiếp cận theo thủ tục. Bởi vì bạn chia vấn đề của mình thành nhiều vấn đề nhỏ và bạn tìm ra giải pháp cho từng vấn đề riêng biệt, một vấn đề lớn tự giải quyết.

P.S. chủ đề habratopic đầu tiên của tôi, nếu bạn thích nó, tôi sẽ dịch cuốn sách sâu hơn, đối với tôi nó khá thú vị và nhiều thông tin

Trong hướng dẫn này, bạn sẽ tìm hiểu những điều cơ bản về lập trình hướng đối tượng trong PHP. Bạn sẽ tìm hiểu về các nguyên tắc của OOP nói chung và học cách viết các tập lệnh đơn giản trong PHP.

Chào mừng bạn đến với bài đầu tiên trong chuỗi bài học về OOP trong PHP! Bằng cách hoàn thành tất cả các bài học trong loạt bài này, bạn sẽ tìm hiểu về các nguyên tắc và khái niệm cơ bản của OOP cũng như học cách tạo một cách nhanh chóng và dễ dàng ứng dụng hữu ích trong PHP.

Trong hướng dẫn này, tôi sẽ bắt đầu giúp bạn nắm bắt nhanh và cho bạn biết về các khái niệm cơ bản về OOP. Bạn sẽ học:

  • OOP là gì
  • OOP sẽ giúp bạn tạo như thế nào PHP tốt nhất kịch bản
  • một số khái niệm cơ bản như lớp, đối tượng, phương thức, biến lớp
  • nơi để bắt đầu viết PHP kịch bản

Bạn đã sẵn sàng đi sâu vào thế giới của các đối tượng PHP chưa? Rồi đi thẳng!

Lập trình hướng đối tượng là gì?

Nếu bạn đã từng tạo và sử dụng các hàm tùy chỉnh trong PHP thì bạn đã sử dụng kiểu lập trình thủ tục. TRONG lập trình thủ tục bạn thường tạo cấu trúc dữ liệu - số, chuỗi, mảng, v.v. - để lưu trữ một số dữ liệu và sau đó xử lý các cấu trúc này Chức năng đặc biệt, thao tác dữ liệu này.

Lập trình hướng đối tượng, hay OOP, đã tiến lên phía trước vì ở đây chúng tôi lưu trữ các cấu trúc dữ liệu và các hàm xử lý chúng trong một thực thể duy nhất gọi là đối tượng. Thay vì xử lý dữ liệu bằng một số chức năng, bạn tải dữ liệu đó vào một đối tượng và sau đó gọi các phương thức của nó để thao tác và nhận được kết quả mong muốn.

Thông thường, các đối tượng được tạo bằng OOP phản ánh các thực thể thực. Ví dụ: nếu bạn đang tạo một diễn đàn cho trang web của mình, bạn sẽ tạo một đối tượng Thành viên sẽ lưu trữ thông tin về từng thành viên diễn đàn (tên, thông tin đăng nhập, địa chỉ email, mật khẩu, v.v.), cũng như các phương pháp sẽ xử lý thông tin này (đăng ký, ủy quyền, đăng xuất, cấm, v.v.).

Tại sao nên sử dụng OOP?

Hướng thủ tục và hướng đối tượng là hai những cách khác Làm điều tương tự. Điều này không có nghĩa là cái này tốt hơn cái kia - mọi người đều viết theo sở thích của mình, vì vậy bạn thậm chí có thể dễ dàng kết hợp hai cách tiếp cận này trong một tập lệnh.

Tuy nhiên, đây là một số lợi ích của OOP dành cho nhà phát triển:

  • Việc phản ánh các tình huống thực tế sẽ dễ dàng hơn: như tôi đã lưu ý ở trên, các đối tượng phản ánh các thực thể thực - con người, sản phẩm, thẻ, bài viết blog, v.v. Điều này giúp đơn giản hóa đáng kể nhiệm vụ khi bạn mới bắt đầu thiết kế ứng dụng của mình, vì mục đích của từng đối tượng cũng như mục đích mối quan hệ giữa các đối tượng sẽ rõ ràng và dễ hiểu.
  • Viết chương trình mô-đun dễ dàng hơn: OOP liên quan đến việc viết các mô-đun. Bằng cách chia mã của bạn thành các mô-đun, bạn sẽ dễ dàng quản lý, gỡ lỗi và mở rộng mã hơn.
  • Việc viết mã sẽ được sử dụng nhiều lần sẽ dễ dàng hơn: Viết mã có thể được sử dụng nhiều lần sẽ tiết kiệm thời gian khi viết ứng dụng và theo thời gian, bạn thậm chí có thể tạo toàn bộ thư viện gồm các loại mô-đun này mà bạn có thể sử dụng trong nhiều trường hợp. các ứng dụng. Với sự trợ giúp của OOP, việc viết mã như vậy trở nên tương đối dễ dàng hơn vì cấu trúc dữ liệu và hàm được gói gọn trong đối tượng duy nhất, có thể được sử dụng bất kỳ số lần.

Một số khái niệm cơ bản

Trước khi bắt đầu viết script, bạn cần hiểu rõ về các khái niệm về lớp, đối tượng, biến lớp và phương thức.

Các lớp học

Một lớp là một khuôn khổ cho một đối tượng. Đây là một đoạn mã xác định:

  • Các kiểu dữ liệu mà các đối tượng lớp được tạo sẽ chứa
  • Các hàm sẽ chứa các đối tượng này.

Khi bạn tạo một ứng dụng OOP, bạn thường sẽ tạo một số lớp đại diện cho Nhiều loại khác nhau các thực thể của ứng dụng của bạn. Ví dụ: để tạo một diễn đàn, bạn có thể tạo các lớp Diễn đàn, Chủ đề, Bài đăng và Thành viên.

Các đối tượng

Đối tượng là một biến loại đặc biệt, được tạo thông qua lớp. Nó chứa dữ liệu thực tế và các chức năng để thao tác nó. Bạn có thể tạo bao nhiêu đối tượng tùy thích từ một lớp duy nhất. Mỗi chức năng của một đối tượng đều độc lập với đối tượng khác, ngay cả khi chúng được tạo từ cùng một lớp.

Để so sánh với các thực thể thực tế:

  • Một lớp là khuôn khổ cho một chiếc ô tô: nó xác định hình thức và hoạt động của chiếc ô tô, nhưng nó vẫn là một thực thể trừu tượng
  • Một đối tượng là một chiếc ô tô thật được tạo ra từ wireframe: nó có các đặc tính thực (chẳng hạn như tốc độ) và hành vi (chẳng hạn như tăng tốc hoặc phanh).

Lưu ý: Một đối tượng thường được gọi là bản chất của một lớp và quá trình tạo đối tượng của một lớp được gọi là quá trình triển khai.

Biến lớp

Các giá trị dữ liệu được lưu trữ trong một đối tượng cụ thể được ghi vào các biến đặc biệt gọi là biến lớp. Các biến lớp được liên kết chặt chẽ với đối tượng của nó. Mặc dù tất cả các đối tượng của một lớp đều có cùng biến nhưng giá trị của chúng có thể khác nhau.

phương pháp

Các hàm được định nghĩa trong một lớp và được sử dụng trên các đối tượng của lớp đó được gọi là các phương thức. Chúng không khác nhiều so với các hàm thông thường - bạn có thể truyền giá trị cho chúng, chúng có thể chứa các biến cục bộ và trả về giá trị. Tuy nhiên, các phương thức thường hoạt động với các biến đối tượng hơn. Ví dụ: phương thức login() để đăng nhập người dùng vào diễn đàn của bạn có thể đặt biến lớp logIn thành true.

Làm cách nào để tạo một lớp trong PHP?

Bây giờ bạn đã biết lớp, phương thức, biến lớp và đối tượng là gì, đã đến lúc tạo một vài lớp và đối tượng trong mã PHP.

Đầu tiên, hãy xem cách tạo một lớp thực sự. Về cơ bản, kịch bản tạo một lớp trông như thế này:

Lớp ClassName ( // (định nghĩa lớp) )

Ví dụ: nếu bạn đang tạo một lớp Thành viên cho diễn đàn của mình, bạn sẽ viết điều này:

Thành viên lớp ( // (định nghĩa lớp) )

Nó khá đơn giản. Đương nhiên, lớp này sẽ không làm gì cho đến khi bạn thêm các biến và phương thức vào nó. Tuy nhiên, đoạn mã trên tạo ra một lớp PHP hợp lệ có thể được sử dụng.

Quy tắc ứng xử tốt: xếp mỗi lớp vào tập tin riêng biệt có cùng tên với tên lớp. Ví dụ: đặt lớp Member vào tệp Member.php và lưu trữ nó trong một thư mục, chẳng hạn như các lớp.

Làm cách nào để tạo đối tượng trong PHP?

Bạn có thể tạo một đối tượng bằng từ khóa mới:

Tên lớp mới()

Mã này sẽ tạo một đối tượng của lớp ClassName. Bạn sẽ cần sử dụng đối tượng này sau này, vì vậy bạn cần lưu trữ nó trong một biến. Ví dụ: hãy tạo một đối tượng của lớp Member và lưu trữ nó trong biến $member:

$member = Thành viên mới();

Chúng ta cũng có thể tạo một đối tượng khác cùng lớp:

$member2 = Thành viên mới();

Mặc dù chúng ta đã tạo hai đối tượng này từ cùng một lớp, các biến $member và $member2 vẫn độc lập với nhau.

Tạo các biến lớp

Bây giờ chúng ta đã biết cách tạo các lớp và đối tượng lớp, hãy xem cách tạo các biến lớp. Có 3 trình truy cập cho các biến lớp có thể được thêm vào một lớp:

  • Biến lớp công khai (công khai): có thể truy cập - tức là chúng có thể được đọc và/hoặc sửa đổi - ở bất kỳ đâu trong tập lệnh, bất kể mã này nằm ở đâu - bên trong lớp hay bên ngoài nó
  • Biến lớp riêng (riêng tư): chỉ có thể truy cập được bằng các phương thức lớp. Tốt nhất nên đặt các biến lớp ở chế độ riêng tư để tách các đối tượng khỏi phần còn lại của mã.
  • Các biến của lớp được bảo vệ: Có sẵn cho các phương thức của lớp của bạn, cũng như các phương thức của các lớp được kế thừa (chúng ta sẽ nói về tính kế thừa sau).

Để tạo một biến lớp, hãy viết từ khóa công khai, riêng tư hoặc được bảo vệ, sau đó nhập tên của biến:

Lớp ClassName ( public $propertyName; private $propertyName; protected $propertyName; )

Hãy thêm một biến lớp công khai vào lớp Thành viên của chúng tôi để lưu tên người dùng:

Thành viên lớp ( public $username = ""; )

Lưu ý rằng chúng ta đã khởi tạo biến lớp, giá trị của nó là chuỗi rỗng, “”. Điều này có nghĩa là khi người dùng mới được tạo, tên người dùng mặc định sẽ bằng dòng trống. Cũng giống như trường hợp các biến thông thường trong PHP, các biến lớp không cần phải được khởi tạo, nhưng tốt hơn hết là đừng lười biếng. Nếu bạn không khởi tạo biến lớp, giá trị mặc định của nó là null.

Truy cập các biến lớp

Để có quyền truy cập vào một biến của đối tượng, hãy sử dụng toán tử ->:

$object->propertyName

Hãy thử. Hãy viết một đoạn script khai báo một lớp Member và một biến lớp, tạo một đối tượng của lớp này, sau đó đặt giá trị của biến lớp và hiển thị nó trên màn hình:

tên người dùng = "Fred"; echo $thành viên->tên người dùng; // In "Fred" ?>

Chạy mã này, nó sẽ hiển thị chuỗi “Fred”, giá trị của biến lớp $member->username. Như bạn có thể thấy, bạn thao tác trên một biến đối tượng giống như một biến thông thường - bạn có thể đặt nó thành một giá trị và đọc nó.

Thêm phương thức vào một lớp

Còn việc tạo phương thức thì sao? Như tôi đã đề cập trước đó, các phương thức chỉ là các hàm thông thường nằm trong một lớp. Vì vậy bạn có thể không ngạc nhiên khi chúng được tạo ra bằng cách sử dụng cùng một từ khóa hàm. Sự khác biệt duy nhất so với việc tạo các hàm thông thường là bạn cũng có thể thêm một trong các mã định danh truy cập (công khai, riêng tư, được bảo vệ) vào phần khai báo của nó. Theo cách này, các phương thức tương tự như các biến lớp:

Lớp ClassName ( public function MethodName() ( // (code) ) Private function MethodName() ( // (code) ) protected function MethodName() ( // (code) ) )

Lưu ý: giống như trong trường hợp biến lớp, các phương thức công khai có thể được gọi từ bất cứ đâu, các phương thức riêng tư chỉ có thể được gọi trong lớp và các phương thức được bảo vệ có thể được gọi từ chính lớp đó và lớp con của nó.

Hãy thử thêm một số phương thức và biến lớp vào lớp của chúng ta:

  • biến lớp $loggedIn riêng tư để xác định người dùng, tức là dù anh ấy có vào hay không,
  • login(), sẽ đăng nhập vào diễn đàn bằng cách đặt biến lớp $loggedIn thành true,
  • logout(), phương thức này sẽ đăng xuất khỏi diễn đàn bằng cách đặt biến lớp $loggedIn thành false,
  • isLoggedIn(), phương thức này sẽ trả về giá trị của biến lớp $loggedIn.

Đây là mã của chúng tôi:

đã đăng nhập = đúng; ) hàm công khai logout() ( $this->loggedIn = false; ) hàm công khai isLoggedIn() ( return $this->loggedIn; ) ) ?>

Bạn có thể nhận thấy rằng chúng tôi đã sử dụng từ khóa $this mới. Trong ngữ cảnh các phương thức của một đối tượng, biến đặc biệt $this đề cập đến chính đối tượng đó. Bằng cách sử dụng $this trong một phương thức đối tượng, phương thức đó có thể truy cập bất kỳ biến lớp và phương thức nào của đối tượng.

Ví dụ: phương thức login() có thể truy cập biến lớp $loggedIn của đối tượng thông qua $this->loggedIn.

Nhân tiện, biến lớp của chúng ta là riêng tư, vì vậy nó không thể được gọi từ bất kỳ phần nào của tập lệnh mà chỉ từ các phương thức login(), logout() và isLoggedIn(). Đây là một cách tiếp cận tốt vì các phần bên trong của đối tượng (chẳng hạn như cách nó ghi lại chính xác xem người dùng có đăng nhập hay không) tách biệt với phần còn lại của mã. Bất cứ khi nào có thể, hãy cố gắng sử dụng các biến lớp riêng tư để các đối tượng của bạn có tính tự chủ, di động và được bảo vệ.

Lưu ý: biến lớp $username trong ví dụ của chúng tôi là biến công khai. Tôi làm điều này chỉ để chứng minh cách bạn có thể truy cập các biến lớp của đối tượng. Trong các dự án thực tế, bạn muốn đặt biến này ở chế độ riêng tư và tạo các biến lớp công khai đặc biệt để đặt giá trị tên người dùng nếu cần.

Sử dụng phương pháp

Để gọi một phương thức trên một đối tượng, hãy sử dụng toán tử -> mà bạn đã quen thuộc.

$object->methodName()

Điều này hoạt động giống như gọi một hàm thông thường. Bạn có thể truyền đối số trong dấu ngoặc đơn (tất nhiên giả sử phải có một số đối số), lệnh gọi phương thức cũng có thể trả về giá trị nhất định, mà sau đó bạn có thể sử dụng.

đã đăng nhập = đúng; ) hàm công khai logout() ( $this->loggedIn = false; ) hàm công khai isLoggedIn() ( return $this->loggedIn; ) ) $member = new Member(); $member->username = "Fred"; echo $member->username . "là". ($thành viên->
"; $member->login(); echo $member->username . " là " . ($member->isLoggedIn() ? "đã đăng nhập" : "đăng xuất") . "
"; $member->logout(); echo $member->username . " là " . ($member->isLoggedIn() ? "đã đăng nhập" : "đăng xuất") . "
"; ?>

Kịch bản này sẽ hiển thị như sau:

Fred đã đăng xuất Fred đã đăng nhập Fred đã đăng xuất

Đây là cách nó hoạt động:

  1. Sau khi mô tả lớp Member, chúng ta tạo đối tượng của nó và lưu trữ nó trong biến $member. Chúng tôi cũng đặt cho biến lớp $username của đối tượng này giá trị “Fred”.
  2. Sau đó, chúng tôi gọi phương thức $member->isLoggedIn() để xác định xem người dùng đã đăng nhập hay chưa. Phương thức này chỉ đơn giản trả về giá trị của biến lớp $loggedIn. Vì giá trị mặc định của biến lớp này là sai nên kết quả của việc gọi $member->isLoggedIn() sẽ sai, do đó thông báo "Fred đã đăng xuất" sẽ được hiển thị.
  3. Sau đó chúng ta gọi phương thức login(). Nó sẽ đặt biến lớp $loggedIn thành true.
  4. Bây giờ, khi gọi phương thức $member->isLoggedIn(), nó sẽ trả về true và hiển thị thông báo "Fred is posted in".
  5. Hãy gọi phương thức logout() để đặt giá trị của thuộc tính $loggedIn thành false.
  6. Hãy gọi phương thức $member->isLoggedIn() lần thứ ba. Bây giờ nó sẽ trả về false vì thuộc tính $loggedIn lại được đặt thành false. Vì vậy, thông báo “Fred đã đăng xuất” sẽ hiển thị lại.

Lưu ý: trong trường hợp bạn nhìn thấy điều này đầu tiên: ?: là toán tử ba ngôi. Đây là phiên bản đơn giản của khối if...else. Bạn có thể tìm hiểu về các loại toán tử này.

kết luận

Trong hướng dẫn này, bạn đã học những điều cơ bản về OOP trong PHP. Bạn đã học về những điều như:

  • OOP là gì và tại sao nó hữu ích?
  • các khái niệm về lớp, đối tượng, biến lớp và phương thức
  • cách tạo lớp và đối tượng
  • cách tạo và sử dụng các biến lớp
  • khái niệm về định danh truy cập công khai, riêng tư, được bảo vệ
  • cách tạo và sử dụng các phương thức lớp

Bạn đã học được rất nhiều và sẽ học được nhiều hơn nữa trong các bài học sau. Tuy nhiên, nếu bạn đã làm qua tất cả các ví dụ tôi đưa ra thì bạn đã có nền tảng vững chắc. Bạn có thể bắt đầu tạo ứng dụng bằng OOP.