Hướng dẫn what are the object oriented features supported by php? - các tính năng hướng đối tượng được php hỗ trợ là gì?

bởi Vincy. Sửa đổi lần cuối vào ngày 1 tháng 7 năm 2022.

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ớp

Lớ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.

<?php

class Mobile
{

    private $premiumModal = "iPhone";

    public function getPrimiumModal()
    {
        return $this->premiumModal;
    }
}
?>

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.

<?php

class Mobile
{

    private $premiumModal = "iPhone";

    public function getPrimiumModal()
    {
        return $this->premiumModal;
    }
}
$object = new Mobile();
echo "<b>Premium Modal:</b> " . $object->getPrimiumModal() . "<br/>";
?>

Người xây dựng và phá hủy

Constructor & 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ó.

<?php

class Mobile
{

    private $modal;

    function __construct()
    {
        $this->modal = array(
            "iPhone",
            "Samsung Galaxy",
            "MotoG"
        );
    }

    function printAllModal()
    {
        foreach ($this->modal as $modal) {
            print $modal . "<br/>";
        }
    }
}

$object = new Mobile();
echo "<b>All Modals:</b><br/>";
$object->printAllModal();
?>

Di sản

Có 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ói

Vì 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ượng

Trướ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.

  • Lớp-Đây là một loại dữ liệu do lập trình viên xác định, bao gồm các chức năng cục bộ cũng như dữ liệu cục bộ. Bạn có thể nghĩ về một lớp như một mẫu để tạo nhiều trường hợp cùng loại (hoặc lớp) của đối tượng. − This is a programmer-defined data type, which includes local functions as well as local data. You can think of a class as a template for making many instances of the same kind (or class) of object.

  • Đối tượng - một thể hiện riêng lẻ của cấu trúc dữ liệu được xác định bởi một lớp. Bạn xác định một lớp một lần và sau đó tạo ra nhiều đối tượng thuộc về nó. Đối tượng còn được gọi là ví dụ. − An individual instance of the data structure defined by a class. You define a class once and then make many objects that belong to it. Objects are also known as instance.

  • Biến thành viên - Đây là các biến được xác định bên trong một lớp. Dữ liệu này sẽ vô hình ở bên ngoài lớp và có thể được truy cập thông qua các chức năng thành viên. Các biến này được gọi là thuộc tính của đối tượng sau khi một đối tượng được tạo. − These are the variables defined inside a class. This data will be invisible to the outside of the class and can be accessed via member functions. These variables are called attribute of the object once an object is created.

  • Hàm thành viên - Đây là hàm được xác định bên trong một lớp và được sử dụng để truy cập dữ liệu đối tượng. − These are the function defined inside a class and are used to access object data.

  • Di truyền - Khi một lớp được xác định bằng cách kế thừa chức năng hiện có của lớp cha thì nó được gọi là kế thừa. Ở đây lớp con sẽ kế thừa tất cả hoặc một vài hàm thành viên và biến của lớp cha. − When a class is defined by inheriting existing function of a parent class then it is called inheritance. Here child class will inherit all or few member functions and variables of a parent class.

  • Lớp cha - một lớp được kế thừa từ một lớp khác. Đây cũng được gọi là lớp cơ sở hoặc siêu lớp. − A class that is inherited from by another class. This is also called a base class or super class.

  • Lớp con - một lớp kế thừa từ một lớp khác. Đây cũng được gọi là lớp con hoặc lớp có nguồn gốc. − A class that inherits from another class. This is also called a subclass or derived class.

  • Đa hình - Đây là một khái niệm định hướng đối tượng trong đó có thể sử dụng chức năng cùng một chức năng cho các mục đích khác nhau. Ví dụ: tên chức năng sẽ vẫn giữ nguyên nhưng nó có số lượng đối số khác nhau và có thể thực hiện nhiệm vụ khác nhau. − This is an object oriented concept where same function can be used for different purposes. For example function name will remain same but it take different number of arguments and can do different task.

  • Quá tải - một loại đa hình trong đó một số hoặc tất cả các nhà khai thác có các triển khai khác nhau tùy thuộc vào các loại đối số của họ. Các chức năng tương tự cũng có thể bị quá tải với việc thực hiện khác nhau. − a type of polymorphism in which some or all of operators have different implementations depending on the types of their arguments. Similarly functions can also be overloaded with different implementation.

  • Trừu tượng dữ liệu - bất kỳ biểu diễn dữ liệu nào trong đó các chi tiết triển khai được ẩn (trừu tượng hóa). − Any representation of data in which the implementation details are hidden (abstracted).

  • Đóng gói - đề cập đến một khái niệm trong đó chúng tôi gói gọn tất cả các chức năng dữ liệu và thành viên với nhau để tạo thành một đối tượng. − refers to a concept where we encapsulate all the data and member functions together to form an object.

  • Constructor - đề cập đến một loại chức năng đặc biệt sẽ được gọi tự động bất cứ khi nào có sự hình thành đối tượng từ một lớp. − refers to a special type of function which will be called automatically whenever there is an object formation from a class.

  • Destructor - đề cập đến một loại chức năng đặc biệt sẽ được gọi tự động bất cứ khi nào một đối tượng bị xóa hoặc đi ra khỏi phạm vi. − refers to a special type of function which will be called automatically whenever an object is deleted or goes out of scope.

Xác định các lớp PHP

Mẫ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 -

  • Lớp mẫu đặc biệt, theo sau là tên của lớp mà bạn muốn xác định.class, followed by the name of the class that you want to define.

  • Một tập hợp các niềng răng bao gồm bất kỳ số lượng khai báo biến và định nghĩa chức năng.

  • Khai báo biến bắt đầu với biểu mẫu đặc biệt var, được theo sau bởi một tên biến $ thông thường; Họ cũng có thể có một nhiệm vụ ban đầu cho một giá trị không đổi.var, which is followed by a conventional $ variable name; they may also have an initial assignment to a constant value.

  • Các định nghĩa chức năng trông giống như các hàm PHP độc lập nhưng là cục bộ của lớp và sẽ được sử dụng để đặt và truy cập dữ liệu đối tượ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 PHP

Khi 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ên

Sau 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ựng

Cá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 -

<?php

class Mobile
{

    private $premiumModal = "iPhone";

    public function getPrimiumModal()
    {
        return $this->premiumModal;
    }
}
$object = new Mobile();
echo "<b>Premium Modal:</b> " . $object->getPrimiumModal() . "<br/>";
?>
0

Điều này sẽ tạo ra kết quả sau -

<?php

class Mobile
{

    private $premiumModal = "iPhone";

    public function getPrimiumModal()
    {
        return $this->premiumModal;
    }
}
$object = new Mobile();
echo "<b>Premium Modal:</b> " . $object->getPrimiumModal() . "<br/>";
?>
1

Chức năng xây dựng

Cá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.

<?php

class Mobile
{

    private $premiumModal = "iPhone";

    public function getPrimiumModal()
    {
        return $this->premiumModal;
    }
}
$object = new Mobile();
echo "<b>Premium Modal:</b> " . $object->getPrimiumModal() . "<br/>";
?>
2

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 -

  • Người phá hủy

  • Giống như hàm hàm tạo, bạn có thể xác định hàm phá hủy bằng hàm __destruct (). Bạn có thể phát hành tất cả các tài nguyên với một chất phá hủ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.

<?php

class Mobile
{

    private $premiumModal = "iPhone";

    public function getPrimiumModal()
    {
        return $this->premiumModal;
    }
}
$object = new Mobile();
echo "<b>Premium Modal:</b> " . $object->getPrimiumModal() . "<br/>";
?>
3

Bâ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ị.

<?php

class Mobile
{

    private $premiumModal = "iPhone";

    public function getPrimiumModal()
    {
        return $this->premiumModal;
    }
}
$object = new Mobile();
echo "<b>Premium Modal:</b> " . $object->getPrimiumModal() . "<br/>";
?>
4

Thành viên công cộng

Trừ 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ể -

  • Từ bên ngoài lớp mà nó được tuyên bố

  • Từ trong lớp mà nó được tuyên bố

  • Từ trong một lớp khác thực hiện lớp mà nó được tuyên bố

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ân

Bằ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.

<?php

class Mobile
{

    private $premiumModal = "iPhone";

    public function getPrimiumModal()
    {
        return $this->premiumModal;
    }
}
$object = new Mobile();
echo "<b>Premium Modal:</b> " . $object->getPrimiumModal() . "<br/>";
?>
5

Khi 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 -

<?php

class Mobile
{

    private $premiumModal = "iPhone";

    public function getPrimiumModal()
    {
        return $this->premiumModal;
    }
}
$object = new Mobile();
echo "<b>Premium Modal:</b> " . $object->getPrimiumModal() . "<br/>";
?>
6

Giao diện

Cá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 -

<?php

class Mobile
{

    private $premiumModal = "iPhone";

    public function getPrimiumModal()
    {
        return $this->premiumModal;
    }
}
$object = new Mobile();
echo "<b>Premium Modal:</b> " . $object->getPrimiumModal() . "<br/>";
?>
7

Sau đó, nếu một lớp khác thực hiện giao diện đó, như thế này -

<?php

class Mobile
{

    private $premiumModal = "iPhone";

    public function getPrimiumModal()
    {
        return $this->premiumModal;
    }
}
$object = new Mobile();
echo "<b>Premium Modal:</b> " . $object->getPrimiumModal() . "<br/>";
?>
8

Hằ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 -

<?php

class Mobile
{

    private $premiumModal = "iPhone";

    public function getPrimiumModal()
    {
        return $this->premiumModal;
    }
}
$object = new Mobile();
echo "<b>Premium Modal:</b> " . $object->getPrimiumModal() . "<br/>";
?>
9

Trong 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ượng

Mộ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.

<?php

class Mobile
{

    private $modal;

    function __construct()
    {
        $this->modal = array(
            "iPhone",
            "Samsung Galaxy",
            "MotoG"
        );
    }

    function printAllModal()
    {
        foreach ($this->modal as $modal) {
            print $modal . "<br/>";
        }
    }
}

$object = new Mobile();
echo "<b>All Modals:</b><br/>";
$object->printAllModal();
?>
0

Lư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ĩnh

Tuyê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 -

<?php

class Mobile
{

    private $modal;

    function __construct()
    {
        $this->modal = array(
            "iPhone",
            "Samsung Galaxy",
            "MotoG"
        );
    }

    function printAllModal()
    {
        foreach ($this->modal as $modal) {
            print $modal . "<br/>";
        }
    }
}

$object = new Mobile();
echo "<b>All Modals:</b><br/>";
$object->printAllModal();
?>
1

Từ khóa cuối cùng

Php 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 ()

<?php

class Mobile
{

    private $modal;

    function __construct()
    {
        $this->modal = array(
            "iPhone",
            "Samsung Galaxy",
            "MotoG"
        );
    }

    function printAllModal()
    {
        foreach ($this->modal as $modal) {
            print $modal . "<br/>";
        }
    }
}

$object = new Mobile();
echo "<b>All Modals:</b><br/>";
$object->printAllModal();
?>
2

Gọ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 -

<?php

class Mobile
{

    private $modal;

    function __construct()
    {
        $this->modal = array(
            "iPhone",
            "Samsung Galaxy",
            "MotoG"
        );
    }

    function printAllModal()
    {
        foreach ($this->modal as $modal) {
            print $modal . "<br/>";
        }
    }
}

$object = new Mobile();
echo "<b>All Modals:</b><br/>";
$object->printAllModal();
?>
3

Trong 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).