Computer >> Máy Tính >  >> Lập trình >> PHP

Quá tải PHP

Giới thiệu

Việc giải thích quá tải trong PHP là khác nhau so với các ngôn ngữ hướng đối tượng khác như C ++ hoặc Java, trong đó thuật ngữ này có nghĩa là khả năng có lớp hasa với phương thức cùng tên nhiều lần nhưng với các đối số và / hoặc kiểu trả về khác nhau. Mặt khác, trong PHP, tính năng tạo thuộc tính và phương thức động được gọi là nạp chồng. Phương pháp kỳ diệu của PHP (tên phương thức bắt đầu bằng dấu gạch dưới kép) được sử dụng để thiết lập các thuộc tính và phương thức động.

Các phương thức ma thuật sau được sử dụng để nạp chồng các thuộc tính -

Cú pháp

public __set ( string $name , mixed $value ) : void
public __get ( string $name ) : mixed
public __isset ( string $name ) : bool
public __unset ( string $name ) : void

__set () được chạy để ghi dữ liệu vào các thuộc tính không thể truy cập được, được bảo vệ hoặc riêng tư hoặc không tồn tại.

__get () đọc dữ liệu từ các thuộc tính không thể truy cập được.

__isset () gọi tới Isset () hoặc blank () trên các thuộc tính không truy cập được.

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

Trong mã sau, thuộc tính động có tên myprop được đặt, truy xuất lại và không đặt

Ví dụ

<?php
class myclass{
   public function __set($name, $value){
      echo "setting $name property to $value \n";
      $this->$name = $value;
   }
   public function __get($name){
      echo "value of $name property is ";
      return $this->$name;
   }
   public function __isset($name){
      return isset($this->$name);
   }
   public function __unset($name){
      unset($this->$name);
   }
}
$obj = new myclass();
$obj->myprop="test";
echo $obj->myprop . "\n";
var_dump (isset($obj->myprop));
unset($obj->myprop);
var_dump (isset($obj->myprop));
?>

Đầu ra

Kết quả như bên dưới -

setting myprop property to test
test
bool(true)
bool(false)

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

Hai phương thức ma thuật được sử dụng để đặt động các phương thức là __call () và __callStatic ()

public __call ( string $name , array $arguments ) : mixed
public static __callStatic ( string $name , array $arguments ) : mixed

__call () được kích hoạt khi gọi các phương thức không thể truy cập trong ngữ cảnh đối tượng.

__callStatic () được kích hoạt khi gọi các phương thức không thể truy cập trong ngữ cảnh tĩnh.

Sau đây exampe trình bày quá trình nạp chồng phương thức trong PHP

Ví dụ

<?php
class myclass{
   public function __call($name, $args){
      // Note: value of $name is case sensitive.
      echo "Calling object method $name with " . implode(" ", $args). "\n";
   }
   public static function __callStatic($name, $args){
      echo "Calling static method $name with " . implode(" ", $args). "\n";
   }
}
$obj = new myclass();
$obj->mymethod("Hello World!");
myclass::mymethod("Hello World!");
?>

Đầu ra

Đoạn mã trên tạo ra kết quả sau:

Calling object method mymethod with Hello World!
Calling static method mymethod with Hello World!