Mari kita bincangkan tentang cara melaksanakan pelbagai kaedah pembinaan dalam PHP

PHPz
Lepaskan: 2023-04-05 14:50:01
asal
760 orang telah melayarinya

PHP ialah bahasa skrip sebelah pelayan yang popular kerana kuasa dan fleksibilitinya membuatkan ramai pembangun menolaknya. Dalam PHP, kaedah pembina (Constructor) adalah teknologi yang sangat biasa digunakan, di mana nilai atribut boleh dipratetap apabila objek dicipta, menjadikan program kami lebih cekap dan fleksibel.

Walau bagaimanapun, pembina PHP mempunyai had: setiap kelas hanya boleh mentakrifkan satu pembina. Had ini tidak mencukupi untuk sesetengah senario, kerana kadangkala kita memerlukan berbilang pembina. Jadi apa yang perlu dilakukan? Ini memerlukan penggunaan berbilang pembina.

Pembina berbilang PHP boleh dilaksanakan melalui kaedah ajaib __construct() dan __call(). Di bawah ini kami menerangkan kedua-dua kaedah ini secara terperinci melalui kes.

1. Gunakan kaedah __construct() untuk melaksanakan pembina berparameter dan tanpa parameter

Kaedah __construct() ialah kaedah ajaib dalam PHP, yang mentakrifkan apabila kelas dijadikan instantiated Kaedah yang dipanggil secara automatik boleh dimulakan beberapa sifat dan operasi lain semasa instantiasi.

Kita boleh menggunakan kaedah __construct() dalam kelas untuk mentakrifkan kaedah constructor. Jika kaedah pembina ditakrifkan, ia akan dilaksanakan secara automatik apabila objek kelas dicipta. Ini adalah pendekatan asli PHP kepada satu pembina.

Walau bagaimanapun, kami boleh melaksanakan pembinaan pembina berparameter dan tanpa parameter melalui kod berikut.

class MyClass{
    public function __construct(){
        $args = func_get_args();
        $numArgs = func_num_args();

        if ($numArgs == 0)  echo "使用无参构造方法<br>";
        else if ($numArgs == 1)  echo "使用有参构造方法,并传入了1个参数:".$args[0]."<br>";
        else if ($numArgs == 2)  echo "使用有参构造方法,并传入了2个参数:".$args[0].",".$args[1]."<br>";
        else  echo "使用有参构造方法,并传入了3个或以上个参数<br>";
    }
}
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan kelas MyClass dan menggunakan kaedah __construct() dalam kelas untuk mentakrifkan pembina Pada masa yang sama, kami menggunakan fungsi terbina dalam PHP func_get_args() dan func_num_args() untuk mendapatkan nilai parameter dan bilangan parameter pembina. Dengan menilai bilangan parameter yang diluluskan, kami boleh melaksanakan pelbagai kaedah pembinaan.

Seterusnya, mari kita uji kaedah pembinaan tanpa parameter dan kaedah pembinaan berparameter masing-masing:

$obj1 = new MyClass();
$obj2 = new MyClass(111);
$obj3 = new MyClass(111,222);
$obj4 = new MyClass(111,222,333);
Salin selepas log masuk

Hasil output:

使用无参构造方法
使用有参构造方法,并传入了1个参数:111
使用有参构造方法,并传入了2个参数:111,222
使用有参构造方法,并传入了3个或以上个参数
Salin selepas log masuk

2. Gunakan kaedah ajaib_ _call() melaksanakan berbilang pembina

Kaedah ajaib __call() ialah kaedah ajaib lain dalam PHP Ia boleh menangkap nama kaedah yang tidak wujud dalam kelas dan menghantar nama kaedah dan parameter kepada __call( ) diproses.

Dalam proses ini, kita boleh menggunakan kaedah ajaib __call() untuk melaksanakan berbilang pembina.

class MyClass2{
    public function oneParam($arg1) {
          echo "使用构造方法OneParam,并传入了1个参数:".$arg1."<br>";
    }

    public function twoParam($arg1,$arg2) {
          echo "使用构造方法TwoParam,并传入了2个参数:".$arg1.",".$arg2."<br>";
    }

    public function __call($name, $arguments){
          echo "不存在的方法:" .$name. "<br>";
          $numArgs = count($arguments);

          if ($name == 'construct' && $numArgs == 1) {
              return $this->oneParam($arguments[0]);
          }
          else if ($name == 'construct' && $numArgs == 2) {
              return $this->twoParam($arguments[0], $arguments[1]);
          }
    }
}
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan kelas MyClass2 yang lain, dan mentakrifkan tiga kaedah twoParam(), oneParam() dan __call() dalam kelas, antaranya kaedah __call() boleh Menangkap nama kaedah membina yang tidak wujud dalam kelas dan melaksanakannya.

Kita boleh menggunakan kod berikut untuk menguji:

$obj5 = new MyClass2();
$obj6 = new MyClass2();
$obj7 = new MyClass2();
$obj8 = new MyClass2();

$obj5->construct(111);
$obj6->construct(111,222);
$obj7->construct2(111);
$obj8->construct2(111,222);
Salin selepas log masuk

Hasil keluaran:

不存在的方法:construct
使用构造方法OneParam,并传入了1个参数:111
不存在的方法:construct
使用构造方法TwoParam,并传入了2个参数:111,222
不存在的方法:construct2
不存在的方法:construct2
Salin selepas log masuk

Ia boleh dilihat dengan menggunakan kaedah sihir __call(), kami juga Pelbagai pembina boleh dilaksanakan dengan jayanya.

Ringkasan

Terdapat banyak cara untuk melaksanakan berbilang pembina dalam PHP Kita boleh melaksanakannya melalui kaedah __construct() dan kaedah ajaib __call(). Melalui kaedah ini, kami boleh praset sifat dan operasi lain dengan lebih mudah dan cekap apabila mencipta objek PHP. Ini bukan sahaja menjadikan pembangunan PHP lebih berwarna, tetapi juga membuatkan kami mengagumi fleksibiliti dan kuasa bahasa PHP.

Atas ialah kandungan terperinci Mari kita bincangkan tentang cara melaksanakan pelbagai kaedah pembinaan dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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