Chúng ta có thể nạp chồng phương thức trong php không?

Chúng ta sẽ thấy một điều bất ngờ trong hướng dẫn PHP này. Tất cả chúng ta đều biết về quá tải và đó là một khái niệm cơ bản trong OOPS và chúng ta đã đánh bại nó đủ ở trường đại học của mình. Chúng tôi có nạp chồng toán tử, nạp chồng hàm, v.v.

Khi các phép toán khác nhau được thực hiện bằng cùng một toán tử, thì nó được gọi là nạp chồng toán tử. Tương tự, nếu ta định nghĩa các hàm trùng tên nhưng khác bộ đối số thì gọi là nạp chồng hàm

Trong PHP chúng ta phải quá tải. Nhiều người nói những điều khác nhau như chúng tôi không phải quá tải trong PHP hoặc chỉ hỗ trợ một phần cho quá tải trong PHP và những gì PHP không quá tải

Vì vậy, những gì là của tôi? . hướng dẫn sử dụng mạng. Sau đây là những gì hướng dẫn sử dụng PHP nói về quá tải,

Cách giải thích “quá tải” của PHP khác với hầu hết các ngôn ngữ hướng đối tượng. Quá tải truyền thống cung cấp khả năng có nhiều phương thức có cùng tên nhưng số lượng và loại đối số khác nhau

Đây là loại hay khó, nó nói cách giải thích của PHP. Chắc chắn có gì đó lầy lội ở đây. Tôi muốn nói rằng, chúng ta đừng lo lắng về việc liệu đó có phải là quá tải OOPS truyền thống hay không và chỉ cần bỏ qua phần quá tải của PHP ;-)

Quá tải PHP

Quá tải của PHP là tạo ra các thực thể động. Trong hướng dẫn này, chúng ta sẽ hiểu về các thực thể động đó, cách chúng được tạo và cách truy cập chúng

Các thực thể động khi quá tải PHP

Các thuộc tính và phương thức là những thực thể được tạo động bằng cách sử dụng quá tải PHP. Sau khi tạo một đối tượng cho một lớp, chúng ta có thể truy cập tập hợp các thực thể, đó là các thuộc tính hoặc phương thức không được định nghĩa trong phạm vi của lớp

Các thực thể như vậy được cho là các thuộc tính hoặc phương thức quá tải và quá trình này được gọi là quá tải

Để làm việc với các thuộc tính hoặc hàm bị quá tải này, các phương thức ma thuật PHP được sử dụng. Hầu hết các phương thức ma thuật sẽ được kích hoạt trong ngữ cảnh đối tượng ngoại trừ phương thức __callStatic() được sử dụng trong ngữ cảnh tĩnh

Các loại quá tải của PHP

Quá tải trong PHP có thể được phân loại là,

  1. Quá tải thuộc tính
  2. Quá tải phương thức

Quá tải thuộc tính

Quá tải thuộc tính PHP cho phép chúng ta tạo các thuộc tính động trong ngữ cảnh đối tượng. Để tạo các thuộc tính đó, không cần dòng mã riêng. Một thuộc tính được liên kết với thể hiện của lớp và nó không được khai báo trong phạm vi của lớp, được coi là thuộc tính quá tải

Chúng ta có thể thực hiện các thao tác sau với các thuộc tính quá tải trong PHP

  • Đặt và nhận các thuộc tính quá tải
  • Đánh giá cài đặt thuộc tính quá tải
  • Hoàn tác cài đặt thuộc tính như vậy

Trước khi thực hiện 3 thao tác trên, chúng ta nên xác định các phương pháp phù hợp. Những phương pháp đó là,

  • __set() – được kích hoạt khi khởi tạo các thuộc tính quá tải
  • __get() – được kích hoạt khi sử dụng các thuộc tính quá tải với câu lệnh in PHP
  • __isset() – Phương thức ma thuật này được gọi khi chúng ta kiểm tra các thuộc tính quá tải với hàm isset()
  • __unset() – Tương tự, hàm này sẽ được gọi khi sử dụng PHP unset() cho các thuộc tính quá tải

Thí dụ. Quá tải thuộc tính PHP

Ví dụ PHP này là tạo động các phần tử mảng thuộc tính

str[$name] = $value;
    }

    public function __get($name)
    {
        echo "Overloaded Property name = " . $this->str[$name] . "
"; } public function __isset($name) { if (isset($this->str[$name])) { echo "Property \$$name is set.
"; } else { echo "Property \$$name is not set.
"; } } public function __unset($name) { unset($this->str[$name]); echo "\$$name is unset
"; } } $objToys = new Toys(); /* setters and getters on dynamic properties */ $objToys->overloaded_property = "new"; echo $objToys->overloaded_property . "\n\n"; /* Operations with dynamic properties values */ isset($objToys->overloaded_property); unset($objToys->overloaded_property); isset($objToys->overloaded_property); ?>

Trong chương trình PHP ví dụ trên, thuộc tính động được tạo. Trong khi khởi tạo thuộc tính động này, __set() được gọi với cặp tên và giá trị để được khởi tạo dưới dạng tên và giá trị của phần tử mảng thuộc tính lớp $str

Thêm vào đó, isset() và unset() với thuộc tính quá tải sẽ kích hoạt các phương thức ma thuật __isset() và __unset(). Sau khi unset() nếu ta gọi isset() thì nó sẽ in thông báo “property not set” ra trình duyệt

Quá tải phương thức

Kiểu nạp chồng này dùng để tạo các phương thức động không được khai báo trong phạm vi lớp. Quá tải phương thức PHP cũng kích hoạt các phương thức kỳ diệu dành riêng cho mục đích thích hợp

Không giống như nạp chồng thuộc tính, nạp chồng phương thức PHP cho phép gọi hàm trong cả đối tượng và ngữ cảnh tĩnh. Các chức năng ma thuật liên quan là,

  • __call() – được kích hoạt khi gọi các phương thức quá tải trong ngữ cảnh đối tượng
  • __callStatic() – được kích hoạt khi gọi các phương thức quá tải trong ngữ cảnh tĩnh

Ví dụ PHP về quá tải phương thức

Chúng ta hãy gọi hàm lớp không xác định với cả tham chiếu đối tượng và với chính tên lớp. Để truy cập chức năng từ lớp bên ngoài với tên của chính lớp đó, nó phải là thành viên tĩnh của lớp đó

Vì vậy, việc truy cập một số phương thức quá tải với tên của lớp sẽ kích hoạt thành viên ma thuật tĩnh được xác định trong lớp. Ví dụ,

PHP có cho phép nạp chồng phương thức không?

PHP không hỗ trợ nạp chồng phương thức . Trong trường hợp bạn chưa bao giờ nghe nói về nạp chồng phương thức, điều đó có nghĩa là ngôn ngữ có thể chọn phương thức dựa trên tham số bạn đang sử dụng để gọi phương thức đó. Điều này có thể thực hiện được ở nhiều ngôn ngữ lập trình khác như Java, C++.

Tại sao không thể nạp chồng phương thức trong PHP?

Bạn không thể quá tải các hàm PHP. Chữ ký hàm chỉ dựa trên tên của chúng và không bao gồm danh sách đối số, vì vậy bạn không thể có hai hàm có cùng tên . Quá tải phương thức lớp trong PHP khác với nhiều ngôn ngữ khác. PHP sử dụng cùng một từ nhưng nó mô tả một mẫu khác.

Quá tải hàm tạo có thể xảy ra trong PHP không?

Mỗi hàm tạo có các tham số khác nhau. Tuy nhiên, PHP xuất ra rằng bạn không thể khai báo lại phương thức __construct trong một lớp nhất định, nghĩa là bạn không thể quá tải hàm tạo .

Nạp chồng thuộc tính trong PHP là gì?

Quá tải thuộc tính PHP cho phép chúng ta tạo các thuộc tính động trong ngữ cảnh đối tượng. Để tạo các thuộc tính đó, không cần dòng mã riêng. Một thuộc tính được liên kết với thể hiện của lớp và không được khai báo trong phạm vi của lớp, được coi là thuộc tính quá tải