Kami mempunyai konsep Pengaturcaraan Berorientasikan Objek yang berbeza seperti Kelas, Objek, Enkapsulasi, Polimorfisme dsb., dalam PHP. Lebihan beban juga merupakan konsep OOP dalam PHP. Lebihan fungsi atau lebihan kaedah ialah ciri yang membolehkan membuat beberapa kaedah dengan nama yang sama, yang berbeza antara satu sama lain dalam jenis parameter input. Ia ditakrifkan secara ringkas sebagai keupayaan satu fungsi untuk melaksanakan tugas yang berbeza.
Takrifan terlebih muatan dalam satu baris: "nama yang sama tetapi pelaksanaan yang berbeza."
IKLAN Kursus Popular dalam kategori ini PEMBANGUN PHP - Pengkhususan | 8 Siri Kursus | 3 Ujian Olok-olokMulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Seperti yang kita tahu, kaedah lebih muatan dilakukan pada fungsi. Oleh itu, fungsi boleh dibebankan dengan pelaksanaan yang berbeza berdasarkan hujah yang dihantar kepada setiap fungsi. Sebagai contoh, untuk mencari luas bulatan, iaitu pi *r *r dengan syarat jejari diberi, untuk mencari luas segi empat sama sisi * sisi, dengan syarat panjang sisi diberi, luas segitiga ialah (tapak * tinggi) / 2 dengan syarat panjang tapak dan tinggi diberi dan seterusnya.
Konsep Lebih Muatan memerlukan kaedah Sihir.
Kaedah Ajaib bermula dengan __(garis bawah berganda) dan dipanggil secara automatik oleh PHP. Selain itu, ini sentiasa ditakrifkan di dalam kelas dan bukan di luar kelas. Kaedah sihir yang berbeza ialah __get(), __set,__construct(), __destruct(), __call(), __callStatic(), __isset(), __unset(),
Pemuatan berlebihan, apabila dilakukan, mencipta sifat dan kaedah secara dinamik, yang bersama-sama dipanggil entiti.
Entiti juga dipanggil sebagai
Mari kita lihat cara kaedah ajaib berfungsi menggunakan kaedah __call()
<?php class Test{ private $a = array('one','two','three'); public function__call($method, $args) { print "Method $method called:\n"; echo "<pre class="brush:php;toolbar:false">"; print_r($args); return $this->a; } } $obj = new Test(); $a = obj->anyMethod(1, 2, 3); var_dump($a); ?>
Dalam contoh di atas, kami telah mengisytiharkan kelas yang dipanggil Ujian, yang mempunyai harta persendirian dan kaedah __panggilan. Dua argumen dihantar ke kaedah __panggilan. Di dalam kaedah __call, kami telah menggunakan statement print(), var_dump argumen dan nilai pulangan x dikembalikan.
Kemudian objek kelas dengan nama obj dicipta dan menggunakan objek ini, kaedah yang tidak ditentukan dipanggil kerana kaedah ini tidak wujud __call() dipanggil sebaliknya.
Terdapat dua jenis lebihan muatan dalam PHP dan mari kita pelajari setiap jenis secara terperinci.
Lebihan beban harta menghasilkan sifat dinamik apabila objek ditetapkan. Sifat ini dikaitkan dengan contoh kelas, dan jika sifat ini tidak diisytiharkan dalam takat kelas, ia dianggap sebagai harta terlebih beban. Untuk ini, anda tidak perlu menulis sebarang kod tambahan. Kaedah sihir berikut memberitahu kami lebih lanjut tentang perkara yang sama.
Di bawah disebut adalah operasi yang dilakukan dengan sifat terbeban
Sifat terlampau beban setter dan Getter (menggunakan __set() dan __get())
Menilai tetapan sifat terlampau beban (menggunakan __isset())
Buat asal tetapan sifat sedemikian (menggunakan __unset())
Mari kita fahami penggunaan setiap kaedah ini
__set() => digunakan untuk memulakan sifat terbeban.
__get() => digunakan untuk mengambil sifat yang telah dimulakan
__isset() => digunakan untuk menyemak sama ada harta itu ditetapkan atau tidak
__unset() => digunakan untuk menyahset harta.
__panggilan() => digunakan untuk memulakan kaedah terlebih beban
__callStatic() => digunakan untuk memulakan kaedah statik
Semua kaedah di atas bersama-sama digunakan dalam contoh berikut.
Kod:
class PropertyOverloading { public $details = array(); //declaring private property private $j=20; // setter operation public function __set($name, $value) { echo "<br />". " In the Setting operation. Set '$name = $value'"; $this->details[$name] = $value; } // getter operation public function __get($name) { echo "<br />". " In the Getting Operation. Get '$name = '"; return $this->details[$name] . ' <br /> '; } // isset operation public function __isset($name) { echo "<br />". " In the isset Operation. isset '$name' ?"; return isset($this->details[$name]); } // unset operation public function __unset($name) { echo "<br />". " In the unset Operation. unset '$name' "; unset($this->details[$name]); } // returning private property value public function getPrivateProperty() { return "<br />". " j = ".$this->j; } } // creating object of class PropertyOverloading // setter and getter methods are called $obj = new PropertyOverloading(); $obj->x = 10; echo $obj->x; //call isset method var_dump(isset($obj->x)); //call unset method unset($obj->x); //check whether object x is unset or not var_dump(isset($obj->x)); //getting method to access the private property echo "<br />". $obj-> getPrivateProperty(); //calling directly the private property // throws error echo "<br />accessing the private property, throws error"; echo "<br />".$obj->j;
Kod:
Output
Seperti kelebihan beban Harta, lebihan Kaedah mencipta kaedah dinamik yang diisytiharkan di luar tahap kelas. Dan ini boleh dilakukan dengan kaedah sihir __call() dan __callStatic(). Ini digunakan berdasarkan rujukan objek dan rujukan statik, masing-masing.
__panggilan() -> digunakan untuk memanggil kaedah terlebih beban dalam rujukan objek
__callStatic() -> digunakan untuk memanggil kaedah terlebih beban dalam rujukan statik
Contoh berikut akan membantu anda mengetahui lebih lanjut.
<?php class MethodOverloading { public function __call($name,$param){ echo "--With object reference <br/>"; } public static function __callStatic($name,$param){ echo "-----With static reference <br/>"; } } // creating object of class MethodOverloading $obj = new MethodOverloading; echo "Method Overloading <br/>"; // using the object reference $obj->DemoTest(); // using the static reference MethodOverloading::DemoTest(); ?>
Kod:
Output:
1) Penentu akses awam digunakan untuk kaedah lebihan muatan.
2) Proses lebihan beban digunakan di mana sifat atau kaedah yang tidak ditakrifkan dalam takat kelas boleh diakses semasa penciptaan objek kelas.
3) Kaedah sihir digunakan untuk sifat atau kaedah terlebih muatan. Daripada dua kaedah ajaib yang digunakan untuk kaedah lebihan beban, kaedah yang paling banyak digunakan ialah kaedah __call() dalam konteks objek dan yang kurang digunakan ialah kaedah __callStatic() yang digunakan dalam konteks statik.
Ini ialah panduan untuk Melebihi muatan dalam PHP. Di sini kita membincangkan jenis dan konsep lebihan dalam PHP dengan contoh. Anda juga boleh melihat artikel berikut untuk mengetahui lebih lanjut –
Atas ialah kandungan terperinci Berlebihan dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!