Rumah pembangunan bahagian belakang masalah PHP Mari kita bincangkan tentang cara melaksanakan pelbagai kaedah pembinaan dalam PHP

Mari kita bincangkan tentang cara melaksanakan pelbagai kaedah pembinaan dalam PHP

Apr 05, 2023 pm 02:34 PM

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!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

PHP 8 JIT (Just-in-Time) Penyusunan: Bagaimana ia meningkatkan prestasi. PHP 8 JIT (Just-in-Time) Penyusunan: Bagaimana ia meningkatkan prestasi. Mar 25, 2025 am 10:37 AM

Kompilasi JIT Php 8 meningkatkan prestasi dengan menyusun kod yang sering dilaksanakan ke dalam kod mesin, memberi manfaat kepada aplikasi dengan pengiraan berat dan mengurangkan masa pelaksanaan.

OWASP Top 10 PHP: Huraikan dan mengurangkan kelemahan umum. OWASP Top 10 PHP: Huraikan dan mengurangkan kelemahan umum. Mar 26, 2025 pm 04:13 PM

Artikel ini membincangkan kelemahan OWASP 10 dalam strategi PHP dan mitigasi. Isu -isu utama termasuk suntikan, pengesahan yang rosak, dan XSS, dengan alat yang disyorkan untuk memantau dan mendapatkan aplikasi PHP.

PHP Secure File Muat naik: Mencegah kelemahan berkaitan fail. PHP Secure File Muat naik: Mencegah kelemahan berkaitan fail. Mar 26, 2025 pm 04:18 PM

Artikel ini membincangkan mendapatkan muat naik fail PHP untuk mengelakkan kelemahan seperti suntikan kod. Ia memberi tumpuan kepada pengesahan jenis fail, penyimpanan selamat, dan pengendalian ralat untuk meningkatkan keselamatan aplikasi.

Penyulitan PHP: Penyulitan simetri vs asimetrik. Penyulitan PHP: Penyulitan simetri vs asimetrik. Mar 25, 2025 pm 03:12 PM

Artikel ini membincangkan penyulitan simetri dan asimetrik dalam PHP, membandingkan kesesuaian, prestasi, dan perbezaan keselamatan mereka. Penyulitan simetri lebih cepat dan sesuai untuk data pukal, manakala asimetrik digunakan untuk pertukaran utama yang selamat.

Pengesahan PHP & amp; Kebenaran: Pelaksanaan selamat. Pengesahan PHP & amp; Kebenaran: Pelaksanaan selamat. Mar 25, 2025 pm 03:06 PM

Artikel ini membincangkan pelaksanaan pengesahan dan kebenaran yang mantap dalam PHP untuk mencegah akses yang tidak dibenarkan, memperincikan amalan terbaik dan mengesyorkan alat peningkatan keselamatan.

Bagaimana anda mengambil data dari pangkalan data menggunakan PHP? Bagaimana anda mengambil data dari pangkalan data menggunakan PHP? Mar 20, 2025 pm 04:57 PM

Artikel membincangkan mendapatkan data dari pangkalan data menggunakan PHP, meliputi langkah, langkah keselamatan, teknik pengoptimuman, dan kesilapan umum dengan penyelesaian.

PHP CSRF Perlindungan: Bagaimana untuk mencegah serangan CSRF. PHP CSRF Perlindungan: Bagaimana untuk mencegah serangan CSRF. Mar 25, 2025 pm 03:05 PM

Artikel ini membincangkan strategi untuk mencegah serangan CSRF di PHP, termasuk menggunakan token CSRF, kuki tapak yang sama, dan pengurusan sesi yang betul.

Apakah tujuan mysqli_query () dan mysqli_fetch_assoc ()? Apakah tujuan mysqli_query () dan mysqli_fetch_assoc ()? Mar 20, 2025 pm 04:55 PM

Artikel ini membincangkan fungsi mysqli_query () dan mysqli_fetch_assoc () dalam PHP untuk interaksi pangkalan data MySQL. Ia menerangkan peranan, perbezaan, dan memberikan contoh praktikal penggunaannya. Hujah utama memberi tumpuan kepada manfaat usin

See all articles