Quá tải trong PHP với ví dụ

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

Khi chúng tôi nhận ra rằng chúng tôi không thể triển khai quá tải bằng cách tạo 2 hàm có cùng tên trong lớp. Vì vậy, để thực hiện nạp chồng trong php, chúng ta sẽ nhờ sự trợ giúp của phương thức ma thuật __call. Phương thức ma thuật __call được gọi khi phương thức được gọi bởi lớp phản đối không thể truy cập được trong lớp. Vì vậy, ở đây chúng tôi sẽ không tạo phương thức một cách chính xác và sẽ nhờ sự trợ giúp của phương thức __call. Hiện tại gọi phương thức sẽ cho chúng ta 2 đối số là tên của phương thức được gọi và tham số của hàm. Hiện tại với sự hỗ trợ của trường hợp chuyển đổi hoặc nếu không, chúng tôi sẽ triển khai quá tải trong php. Sau đây là trường hợp quá tải cực kỳ cơ bản trong php

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 cài đặt đối tượng. Để tạo các thuộc tính đó, không cần dòng mã nào khác. Một thuộc tính liên quan đến thể hiện của lớp và nó không được khai báo bên trong phạm vi của lớp, được coi là thuộc tính quá tải

Dưới đây chúng ta sẽ tìm hiểu về một số cách sử dụng 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

Quá tải thuộc tính PHP sử dụng một số phương thức ma thuật. được mô tả dưới đây

được chạy khi ghi dữ liệu vào các thuộc tính không thể truy cập

được sử dụng để đọc dữ liệu từ các thuộc tính không thể truy cập

được kích hoạt bằng cách gọi isset() hoặc empty() trên các thuộc tính không thể truy cập

được gọi khi unset() được sử dụng trên các thuộc tính không thể truy cập

class PropertyOverload
{
/** Location for overloaded data. */
private $data = array();
public function __set($name, $value)
{
$this->data[$name] = $value;
}
public function __get($name)
{
return $this->data[$name];
}
public function __isset($name)
{
return isset($this->data[$name]);
}
public function __unset($name)
{
unset($this->data[$name]);
}
}
$obj = new PropertyOverload;
$obj->name = "Faysal Ahmed";
echo $obj->name; // Faysal Ahmed

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 $data

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

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

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ụ

  • Quá tải trong PHP cung cấp phương tiện để tự động tạo các thuộc tính và phương thức
  • Các thực thể động này được xử lý thông qua các phương thức ma thuật, người ta có thể thiết lập trong một lớp cho các loại hành động khác nhau
  • Tất cả các phương thức nạp chồng phải được định nghĩa là Public
  • Sau khi tạo đố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à 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
Quá tải trong PHP với ví dụ

quá tải tài sản

  • 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

Một số phương thức ma thuật hữu ích cho quá tải thuộc tính

  • __bộ(). Nó được kích hoạt trong khi khởi tạo các thuộc tính quá tải
  • __được(). Nó được sử dụng để đọc dữ liệu từ Thuộc tính không thể truy cập
  • __isset(). Phương thức kỳ diệu này được gọi khi chúng ta kiểm tra các thuộc tính quá tải bằng hàm isset()
  • __unset(). Hàm này sẽ được gọi khi sử dụng PHP unset() cho các thuộc tính quá tải

giải thích quá tải với ví dụ là gì?

Trong Java, hai hoặc nhiều phương thức có thể có cùng tên nếu chúng khác nhau về tham số (số lượng tham số khác nhau, loại tham số khác nhau hoặc cả hai). These methods are called overloaded methods and this feature is called method overloading. For example: void func() { .. } void func(int a) { .. }

Quá tải và ghi đè trong PHP với ví dụ là gì?

Nạp chồng và ghi đè hàm là tính năng OOP trong PHP. Trong nạp chồng hàm, nhiều hàm có thể có cùng chữ ký phương thức nhưng số lượng đối số khác nhau. Nhưng trong trường hợp ghi đè hàm, nhiều hàm sẽ có cùng chữ ký phương thức và số lượng đối số

Có quá tải trong PHP 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 PHP không hỗ trợ quá tải?

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.