bởi Vincy. Sửa đổi lần cuối vào ngày 1 tháng 7 năm 2022. Show
PHP hỗ trợ cả lập trình thủ tục và hướng đối tượng. Các phương pháp hướng đối tượng sẽ hữu ích và hiệu quả trong khi làm việc với các dự án phức tạp hoặc kích thước khổng lồ. Nó giúp ngăn cách các miền và các lớp lập trình dựa trên dự án để dễ dàng xử lý. Trong hướng dẫn này, chúng ta sẽ thấy một số tính năng OOPS quan trọng được hỗ trợ bởi PHP như lớp, đối tượng, đóng gói, kế thừa và nhiều hơn nữa. Tôi đã mô tả các tính năng này với các ví dụ đơn giản. LớpLớp là một cấu trúc khối lập trình có chứa các thuộc tính và phương thức riêng của nó để xử lý các chức năng miền. Chúng ta có thể tạo các phiên bản cho một lớp để truy cập các thuộc tính và phương thức của nó. Mã ví dụ sau đây hiển thị một lớp di động () chứa các thuộc tính và phương thức. Trong ví dụ này, tôi đã chỉ định một nhà xác định truy cập cho các thuộc tính và phương thức của lớp. Các nhà xác định truy cập này được sử dụng để hạn chế khả năng hiển thị của các thuộc tính và phương thức của lớp.
Sự vậtĐối tượng hoặc phiên bản có thể được tạo cho một lớp để truy cập các thành phần lớp. Mã PHP dưới đây cho thấy cách tạo một đối tượng cho lớp di động () và nó được sử dụng để truy cập các thành phần lớp.
Người xây dựng và phá hủyConstructor & nbsp; là một hàm lớp được gọi là tự động khi một thể hiện được tạo cho lớp đó. Destructor & nbsp; là một chức năng được gọi khi thể hiện lớp bị phá hủy. Trong PHP, hàm tạo và hàm hủy được xác định bằng cách sử dụng các hàm ma thuật __construct () và __destruct () tương ứng. Mã sau đây cho thấy một ví dụ về hàm tạo lớp được sử dụng để khởi tạo thuộc tính riêng của nó.
Di sảnCó ba loại kế thừa kế thừa, đa cấp và đa cấp. PHP hỗ trợ kế thừa đơn và đa cấp. Nó sẽ không hỗ trợ nhiều kế thừa. Đó là, một lớp chỉ có thể mở rộng một lớp cha mẹ. Để khắc phục giới hạn này, PHP cung cấp khái niệm đặc điểm cho phép chúng tôi sử dụng các chức năng của một lớp trong một hoặc nhiều lớp. Chúng tôi có một bài viết chi tiết về kế thừa PHP với nhiều ví dụ hơn. Đóng góiVì các thuộc tính và phương thức của các đối tượng được đính kèm với bộ chứa lớp theo cách trừu tượng, bất kỳ mã nào từ bên ngoài không thể truy cập lớp, trừ khi khác bằng cách sử dụng các đối tượng của lớp đó. Theo cách này, các thuộc tính được gói gọn. Trở lại đầu Chúng ta có thể tưởng tượng vũ trụ của chúng ta được làm từ các vật thể khác nhau như mặt trời, trái đất, mặt trăng, v.v ... Tương tự chúng ta có thể tưởng tượng chiếc xe của chúng ta được làm từ các vật thể khác nhau như bánh xe, tay lái, thiết bị, v.v. Thực hiện một phần mềm bằng các đối tượng khác nhau. Khái niệm định hướng đối tượngTrước khi chúng ta đi chi tiết, hãy xác định các thuật ngữ quan trọng liên quan đến lập trình hướng đối tượng.
Xác định các lớp PHPMẫu chung để xác định một lớp mới trong PHP như sau - <?php class phpClass { var $var1; var $var2 = "constant string"; function myfunc ($arg1, $arg2) { [..] } [..] } ?> Đây là mô tả của từng dòng -
Thí dụDưới đây là một ví dụ xác định loại sách loại - <?php class Books { /* Member variables */ var $price; var $title; /* Member functions */ function setPrice($par){ $this->price = $par; } function getPrice(){ echo $this->price ."<br/>"; } function setTitle($par){ $this->title = $par; } function getTitle(){ echo $this->title ." <br/>"; } } ?> Biến $ Đây là một biến đặc biệt và nó đề cập đến cùng một đối tượng IE. chính nó.$this is a special variable and it refers to the same object ie. itself. Tạo đối tượng trong PHPKhi bạn đã xác định lớp của mình, thì bạn có thể tạo bao nhiêu đối tượng như bạn muốn loại lớp đó. Sau đây là một ví dụ về cách tạo đối tượng bằng toán tử mới.new operator. $physics = new Books; $maths = new Books; $chemistry = new Books; Ở đây chúng tôi đã tạo ra ba đối tượng và những đối tượng này độc lập với nhau và chúng sẽ có sự tồn tại riêng biệt. Tiếp theo chúng ta sẽ xem cách truy cập chức năng thành viên và xử lý các biến thành viên. Gọi các chức năng thành viênSau khi tạo các đối tượng của bạn, bạn sẽ có thể gọi các chức năng thành viên liên quan đến đối tượng đó. Một hàm thành viên sẽ chỉ có thể xử lý biến thành viên của đối tượng liên quan. Ví dụ sau đây cho thấy cách đặt tiêu đề và giá cho ba cuốn sách bằng cách gọi các chức năng thành viên. $physics->setTitle( "Physics for High School" ); $chemistry->setTitle( "Advanced Chemistry" ); $maths->setTitle( "Algebra" ); $physics->setPrice( 10 ); $chemistry->setPrice( 15 ); $maths->setPrice( 7 ); Bây giờ bạn gọi các chức năng thành viên khác để có được các giá trị được đặt bởi ví dụ trên - $physics->getTitle(); $chemistry->getTitle(); $maths->getTitle(); $physics->getPrice(); $chemistry->getPrice(); $maths->getPrice(); Điều này sẽ tạo ra kết quả sau - Physics for High School Advanced Chemistry Algebra 10 15 7 Chức năng xây dựngCác hàm xây dựng là loại chức năng đặc biệt được gọi là tự động bất cứ khi nào một đối tượng được tạo. Vì vậy, chúng tôi tận dụng tối đa hành vi này, bằng cách khởi tạo nhiều thứ thông qua các chức năng xây dựng. PHP cung cấp một hàm đặc biệt gọi là __construct () để xác định hàm tạo. Bạn có thể truyền nhiều đối số bạn thích vào hàm tạo hàm.__construct() to define a constructor. You can pass as many as arguments you like into the constructor function. Ví dụ sau sẽ tạo ra một hàm tạo cho lớp sách và nó sẽ khởi tạo giá và tiêu đề cho cuốn sách tại thời điểm tạo đối tượng. function __construct( $par1, $par2 ) { $this->title = $par1; $this->price = $par2; } Bây giờ chúng ta không cần gọi riêng chức năng tập hợp để đặt giá và tiêu đề. Chúng ta có thể khởi tạo hai biến thành viên này tại thời điểm tạo đối tượng. Kiểm tra ví dụ sau đây - 0Điều này sẽ tạo ra kết quả sau - 1Chức năng xây dựngCác hàm xây dựng là loại chức năng đặc biệt được gọi là tự động bất cứ khi nào một đối tượng được tạo. Vì vậy, chúng tôi tận dụng tối đa hành vi này, bằng cách khởi tạo nhiều thứ thông qua các chức năng xây dựng.__destruct(). You can release all the resources with-in a destructor. PHP cung cấp một hàm đặc biệt gọi là __construct () để xác định hàm tạo. Bạn có thể truyền nhiều đối số bạn thích vào hàm tạo hàm.Ví dụ sau sẽ tạo ra một hàm tạo cho lớp sách và nó sẽ khởi tạo giá và tiêu đề cho cuốn sách tại thời điểm tạo đối tượng. 2Bây giờ chúng ta không cần gọi riêng chức năng tập hợp để đặt giá và tiêu đề. Chúng ta có thể khởi tạo hai biến thành viên này tại thời điểm tạo đối tượng. Kiểm tra ví dụ sau đây -
Ví dụ sau kế thừa lớp sách và thêm nhiều chức năng dựa trên yêu cầu. 3Bây giờ ngoài các chức năng kế thừa, Class Novel giữ thêm hai chức năng thành viên. Chức năng ghi đèĐịnh nghĩa chức năng trong các lớp con ghi đè các định nghĩa với cùng tên trong các lớp cha. Trong một lớp con, chúng ta có thể sửa đổi định nghĩa của một hàm được kế thừa từ lớp cha. Trong ví dụ sau đây, các hàm getTitle được ghi đè để trả về một số giá trị. 4Thành viên công cộngTrừ khi bạn chỉ định khác, các thuộc tính và phương thức của một lớp là công khai. Điều đó có nghĩa là, chúng có thể được truy cập trong ba tình huống có thể -
Cho đến bây giờ chúng tôi đã thấy tất cả các thành viên là thành viên công cộng. Nếu bạn muốn giới hạn khả năng tiếp cận của các thành viên của một lớp thì bạn xác định các thành viên lớp là riêng tư hoặc được bảo vệ.private or protected. Thành viên tư nhânBằng cách chỉ định một thành viên riêng tư, bạn giới hạn khả năng tiếp cận của nó đối với lớp mà nó được khai báo. Thành viên tư nhân không thể được giới thiệu từ các lớp kế thừa lớp mà nó được khai báo và không thể được truy cập từ bên ngoài lớp. Một thành viên lớp có thể được thực hiện riêng tư bằng cách sử dụng từ khóa riêng tư của thành viên.private keyword infront of the member. 5Khi lớp MyClass được kế thừa bởi một lớp khác bằng cách sử dụng mở rộng, myPublicFunction () sẽ được hiển thị, cũng như $ Driver. Lớp mở rộng sẽ không có bất kỳ nhận thức nào về hoặc truy cập vào MyPrivateFunction và $ Car, bởi vì chúng được tuyên bố riêng tư. Thành viên được bảo vệMột thuộc tính hoặc phương thức được bảo vệ có thể truy cập được trong lớp mà nó được khai báo, cũng như trong các lớp mở rộng lớp đó. Các thành viên được bảo vệ không có sẵn bên ngoài hai loại lớp đó. Một thành viên lớp có thể được bảo vệ bằng cách sử dụng từ khóa được bảo vệ trước thành viên.protected keyword in front of the member. Đây là phiên bản khác nhau của MyClass - 6Giao diệnCác giao diện được xác định để cung cấp một tên chức năng chung cho người thực hiện. Người thực hiện khác nhau có thể thực hiện các giao diện đó theo yêu cầu của họ. Bạn có thể nói, giao diện là bộ xương được thực hiện bởi các nhà phát triển. Kể từ PHP5, có thể xác định giao diện, như thế này - 7Sau đó, nếu một lớp khác thực hiện giao diện đó, như thế này - 8Hằng sốMột hằng số có phần giống như một biến, trong đó nó giữ một giá trị, nhưng thực sự giống như một hàm vì một hằng số là bất biến. Một khi bạn khai báo một hằng số, nó không thay đổi. Tuyên bố một hằng số rất dễ dàng, như được thực hiện trong phiên bản MyClass này - 9Trong lớp này, bắt buộc là một hằng số. Nó được tuyên bố với từ khóa Const, và trong mọi trường hợp, nó không thể được thay đổi thành bất cứ điều gì khác ngoài 1.7. Lưu ý rằng tên của hằng số không có $ hàng đầu, như tên biến làm. Lớp học trừu tượngMột lớp trừu tượng là một lớp không thể được khởi tạo, chỉ được thừa hưởng. Bạn tuyên bố một lớp trừu tượng với từ khóa trừu tượng, như thế này -abstract, like this − Khi kế thừa từ một lớp trừu tượng, tất cả các phương pháp được đánh dấu trừu tượng trong tuyên bố lớp của cha mẹ phải được xác định bởi đứa trẻ; Ngoài ra, các phương pháp này phải được xác định với cùng một tầm nhìn. 0Lưu ý rằng các định nghĩa chức năng bên trong một lớp trừu tượng cũng phải được đi trước bởi Tóm tắt từ khóa. Nó không hợp pháp để có các định nghĩa chức năng trừu tượng trong một lớp không phải là người. Từ khóa tĩnhTuyên bố các thành viên hoặc phương thức của lớp là tĩnh giúp chúng có thể truy cập mà không cần phải khởi tạo lớp. Một thành viên được tuyên bố là không thể truy cập tĩnh với một đối tượng lớp khởi tạo (mặc dù phương thức tĩnh có thể). Thử ví dụ sau - 1Từ khóa cuối cùngPhp 5 giới thiệu từ khóa cuối cùng, ngăn chặn các lớp con ghi đè một phương thức bằng cách tiền tố định nghĩa với Final. Nếu bản thân lớp đang được xác định cuối cùng thì nó không thể được mở rộng. Ví dụ sau dẫn đến lỗi gây tử vong: Không thể ghi đè phương thức cuối cùng Baseclass :: moretesting () 2Gọi các nhà xây dựng cha mẹThay vì viết một hàm tạo hoàn toàn mới cho lớp con, hãy viết nó bằng cách gọi cho hàm tạo của cha mẹ một cách rõ ràng và sau đó làm bất cứ điều gì cần thiết ngoài việc khởi tạo lớp con. Đây là một ví dụ đơn giản - 3Trong ví dụ này, chúng tôi có một lớp cha (tên), có một hàm tạo hai đối tượng và một lớp con (Tên1), có một hàm tạo ba đối tượng. Chất xây dựng của các chức năng của NameB1 bằng cách gọi hàm tạo cha mẹ của nó một cách rõ ràng bằng cách sử dụng cú pháp :: Syntax (chuyển hai đối số của nó theo) và sau đó đặt một trường bổ sung. Tương tự, NAMEUB1 định nghĩa hàm TOSTRING () không xây dựng của nó theo hàm cha mà nó ghi đè. Lưu ý - một hàm tạo có thể được xác định với cùng tên với tên của một lớp.Nó được định nghĩa trong ví dụ trên. − A constructor can be defined with the same name as the name of a class. It is defined in above example. Các tính năng được hỗ trợ bởi đối tượng là gìCó ba tính năng chính trong lập trình hướng đối tượng làm cho chúng khác với các ngôn ngữ không phải là không gian: đóng gói, kế thừa và đa hình.encapsulation, inheritance and polymorphism.
Năm tính năng chính của OOP là gì?Các tính năng hàng đầu của rất tiếc.. Di sản.Theo thuật ngữ của Layman, các thuộc tính mà bạn thừa hưởng từ cha mẹ là một minh họa đơn giản về quyền thừa kế..... Đóng gói..... Trừu tượng hóa..... Đa hình..... Phương thức ghi đè..... Phương pháp quá tải..... Các đối tượng..... Classes.. Php có phải là ngôn ngữ định hướng đối tượng đầy đủ không?Có, các phiên bản mới nhất của PHP được định hướng đối tượng.Đó là, bạn có thể tự viết các lớp, sử dụng kế thừa và khi thích hợp, chức năng tích hợp được tích hợp trong các đối tượng (như các tính năng MySQL).. That is, you can write classes yourself, use inheritance, and where appropriate, the built in functionality is built in objects too (like MySQL features). |