Rumah >pembangunan bahagian belakang >tutorial php >Kaedah Ajaib: Memahami __construct, __destruct dan kaedah teras lain dalam PHP

Kaedah Ajaib: Memahami __construct, __destruct dan kaedah teras lain dalam PHP

PHPz
PHPzasal
2023-06-19 23:22:351300semak imbas

Kaedah ajaib: Fahami kaedah teras seperti __build dan __destruct dalam PHP

Dalam bahasa PHP, terdapat beberapa kaedah khas yang dipanggil "kaedah ajaib", termasuk __construct, __destruct, dsb. Kaedah ini memainkan peranan penting dalam pengaturcaraan berorientasikan objek dalam PHP. Artikel ini akan menerangkan peranan dan aplikasi praktikal kaedah ini.

__kaedah bina

__kaedah bina ialah kaedah yang sangat penting Ia adalah kaedah yang dipanggil secara automatik apabila PHP mencipta objek baharu. Dalam kaedah ini, kita boleh melakukan beberapa kerja permulaan, seperti menetapkan nilai lalai untuk sifat objek, menyambung ke pangkalan data, dsb. Lebih-lebih lagi, jika kita tidak mentakrifkan kaedah ini, ralat akan berlaku apabila kelas dijadikan instantiated.

Berikut ialah contoh kod:

class Person{
  public $name;
  public $age;
  
  function __construct($name, $age){
    $this->name = $name;
    $this->age = $age;
  }
  
  function showInfo(){
    echo "姓名:" . $this->name . " 年龄:" . $this->age;
  }
}

$person = new Person("张三", 20);
$person->showInfo();

Dalam kod di atas, kami mentakrifkan kelas bernama Person dan mentakrifkan kaedah __construct dalam kelas untuk memulakan nama dan atribut Umur. Apabila membuat instance kelas Person, kami memasukkan "Zhang San" dan 20 sebagai parameter, supaya maklumat peribadi boleh dikeluarkan melalui kaedah $person->showInfo().

__kaedah musnah

kaedah __destruct ialah kaedah yang dipanggil secara automatik apabila objek dimusnahkan. Dalam kaedah ini, kita boleh melakukan beberapa kerja pembersihan, seperti melepaskan beberapa sumber yang diduduki, dsb. Begitu juga, jika kita tidak mentakrifkan kaedah ini, ralat akan berlaku apabila objek dimusnahkan.

Berikut ialah contoh kod:

class Car{
  public $brand;
  
  function __construct($brand){
    $this->brand = $brand;
  }
  
  function run(){
    echo "我开着" . $this->brand . "在马路上飞奔!";
  }
  
  function __destruct(){
    echo $this->brand . "被销毁了!";
  }
}

$car = new Car("宝马");
$car->run();

Dalam kod di atas, kami mentakrifkan kelas bernama Car dan mentakrifkan kaedah __destruct dalam kelas untuk mengeluarkan dan memusnahkan maklumat kenderaan tertentu. Selepas kami membuat instantiate kelas Kereta, kami memanggil kaedah $car->run() untuk mengeluarkan maklumat kenderaan dan mengeluarkan maklumat pemusnahan pada penghujungnya.

__kaedah panggilan

Kaedah __panggilan ialah kaedah yang dipanggil secara automatik apabila kaedah yang tidak wujud dalam kelas dipanggil. Dalam kaedah ini, kita boleh memanggil kaedah dan lulus parameter secara dinamik. Kaedah ini sangat sesuai untuk menangani beberapa situasi yang tidak menentu semasa pembangunan, seperti memanggil kaedah operasi pangkalan data secara dinamik.

Berikut ialah contoh kod:

class Database{
  private $db;
  
  function __construct($host, $user, $password, $dbName){
    $this->db = new mysqli($host, $user, $password, $dbName);
  }
  
  function __call($method, $args){
    if(method_exists($this->db, $method)){
      return call_user_func_array([$this->db, $method], $args);
    }else{
      die("没有找到" . $method . "方法!");
    }
  }
}

$database = new Database("localhost", "root", "password", "test");
$res = $database->query("SELECT * FROM users");

while($row = $res->fetch_assoc()){
  echo $row['name'];
}

Dalam kod di atas, kami mentakrifkan kelas bernama Pangkalan Data dan mentakrifkan kaedah __panggilan dalam kelas untuk Kaedah panggilan dinamik kelas mysqli. Apabila kita membuat instantiate kelas Pangkalan Data dan memanggil kaedah pertanyaan, kaedah query() dalam kelas mysqli sebenarnya dipanggil secara dinamik.

Kesimpulan

Dalam bahasa PHP, kaedah ajaib memberikan kita banyak alatan berguna, seperti kaedah __construct untuk memulakan objek, kaedah __destruct untuk pembersihan dan kaedah __call untuk pelaksanaan Panggilan dinamik kaedah, dsb. Kemahiran dalam kaedah ini sangat penting untuk pengaturcaraan berorientasikan objek dalam PHP.

Atas ialah kandungan terperinci Kaedah Ajaib: Memahami __construct, __destruct dan kaedah teras lain dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn