Berlebihan dalam PHP

王林
Lepaskan: 2024-08-29 12:56:56
asal
963 orang telah melayarinya

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-olok

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Bagaimanakah Overloading berfungsi dalam PHP?

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

  • sifat: ahli data
  • kaedah: fungsi data

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);
?>
Salin selepas log masuk

Berlebihan dalam PHP

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.

Jenis Lebihan Muatan dalam PHP

Terdapat dua jenis lebihan muatan dalam PHP dan mari kita pelajari setiap jenis secara terperinci.

  • Hartanah Lebih Muatan
  • Pembebanan Kaedah

1) Harta Berlebihan

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;
Salin selepas log masuk

Kod:

Berlebihan dalam PHP

Output

Berlebihan dalam PHP

2) Kaedah Lebih Muatan

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();
?>
Salin selepas log masuk

Kod:

Berlebihan dalam PHP

Output:

Berlebihan dalam PHP

Peraturan

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.

Artikel Disyorkan

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 –

  1. Apakah PHP Array?
  2. Lebih muatan dalam C#
  3. Lebih muatan dalam C++
  4. Melebihi muatan dan Mengatasi dalam C#

Atas ialah kandungan terperinci Berlebihan dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
php
sumber:php
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan