Bagaimana cara meniru banyak konstruktor di PHP?

Konstruktor adalah fungsi anggota khusus untuk pengaturan awal instance objek yang baru dibuat dari suatu kelas.

Dalam PHP, konstruktor adalah metode bernama __membangun(), yang disebut dengan kata kunci baru setelah membuat objek. Konstruktor juga dapat menerima argumen, dalam hal ini, ketika pernyataan baru ditulis, Anda juga perlu mengirim argumen konstruktor untuk parameter.

Konstruktor adalah blok bangunan paling dasar yang mendefinisikan objek masa depan dan sifatnya. Anda dapat mengatakan bahwa Konstruktor adalah cetak biru untuk pembuatan objek yang memberikan nilai untuk fungsi anggota dan variabel anggota.

Jenis konstruktor:

  • Konstruktor Default: Tidak memiliki parameter, tetapi nilai ke konstruktor default dapat diteruskan secara dinamis.
  • Konstruktor Berparameter: Dibutuhkan parameter, dan Anda juga dapat memberikan nilai yang berbeda ke anggota data.
  • Salin Konstruktor: Ia menerima alamat objek lain sebagai parameter.

Catatan: PHP tidak memiliki dukungan untuk mendeklarasikan banyak konstruktor dengan jumlah parameter yang berbeda untuk kelas yang tidak seperti bahasa seperti Java.

Beberapa Konstruktor: Tersedia lebih dari satu konstruktor dalam satu kelas untuk menginisialisasi instance.

Contoh 1: Dalam contoh berikut, kami membuat skrip dan mencoba mendeklarasikan beberapa konstruktor. Kami akan menugaskan nama dari a murid menggunakan satu konstruktor dan usia dengan konstruktor lain.

PHP

<?php

class Student {

    

    

    public function __construct(string $name) {

         

    }

 

    

    public function __construct(string $name, string $age) {

         

    }

}

 

$obj1 = new Student('Akshit');

$obj2 = new Student('Akshit', '12');

 

?>

Keluaran:

PHP Fatal error:
Cannot redeclare Student::__construct() in 
/home/33a7c36527d199adf721ab261035d4f7.php on line 10

Kita harus menggunakan metode yang berbeda untuk menggunakan Beberapa Konstruktor di PHP. Beberapa tercantum di bawah ini.

Mendekati:

  • Dapatkan semua argumen yang ditetapkan dengan menggunakan PHP fungsi_get_arg() untuk mendapatkan nilai yang disebutkan dari argumen yang diteruskan sebagai parameter.
  • Kami pertama-tama akan menghitung jumlah argumen yang diteruskan ke konstruktor dengan menggunakan PHP func_num_args().
  • Dengan mengetahui jenis argumen menggunakan PHP gettype() atau fungsi spesifik tipe data seperti is_int().
  • Beri nama metode Anda sesuai dengan jumlah argumen dan periksa keberadaannya menggunakan PHP metode_ada().
  • Panggil fungsi yang sesuai menggunakan panggilan_pengguna_fungsi_array() dengan meneruskan argumen asli sebagai panggilan_pengguna_fungsi_array()argumen kedua.

Contoh 2:

PHP

<?php

 

class Student {

 

    public function ConstructorWithArgument1($arg1) {

        echo('Constructor with 1 parameter called: '.$arg1)."<br>";

    }

     

    public function ConstructorWithArgument2($arg1, $arg2) {

        echo('Constructor with 2 parameters called: 

            '.$arg1.','.$arg2)."<br>";

    }

     

    public function ConstructorWithArgument3($arg1, $arg2, $arg3) {

        echo('Constructor with 3 parameters called: 

        '.$arg1.','.$arg2.','.$arg3)."<br>";

    }

    public function __construct() {

        $arguments = func_get_args();

        $numberOfArguments = func_num_args();

 

        if (method_exists($this, $function

                'ConstructorWithArgument'.$numberOfArguments)) {

            call_user_func_array(

                        array($this, $function), $arguments);

        }

    }

}

 

$obj = new Student('Akshit'); 

 

$obj = new Student('Akshit','Nikita'); 

 

$obj = new Student('Akshit','Nikita','Ritesh'); 

 

?>

Keluaran

Constructor with 1 parameter called: Akshit
Constructor with 2 parameters called: Akshit,Nikita
Constructor with 3 parameters called: Akshit,Nikita,Ritesh

Mendekati:

  • Periksa jenis argumen yang diteruskan dengan konstruktor. Itu bisa dilakukan dengan menggunakan gettype() atau fungsi spesifik tipe data seperti is_int().
  • Tentukan jenis dan inisialisasi variabel instan.

Contoh 3: Contoh berikut menunjukkan beberapa konstruktor dengan tipe data yang berbeda seperti string atau integer.

PHP

<?php

class Student {

 

    public $id;

    public $name;

    

  

    public function __construct($idOrName) {

     

        if(is_int($idOrName)) {

             

            $this->id=$idOrName;

            echo "ID is initialized using constructor"."<br>";

            

        }

        else {

            $this->name = $idOrName;

            echo "Name is initialized using constructor"."<br>";

        }

    }

    

    public function setID($id) {

        $this->id = $id;

    }

    

    public function setName($name) {

        $this->name = $name;

    }

    

    public function getinfo() {

        echo "ID : ". $this->id."<br>";

        echo "Name : ". $this->name."<br>";

    }

}

  

$student = new Student("Akshit");

$student->setID(1);

$student->getinfo();

  

$student2 = new Student(2);

$student2->setName("Nikita");

$student2->getinfo();

 

?>

Keluaran

Name is initialized using constructor
ID : 1
Name : Akshit
ID is initialized using constructor
ID : 2
Name : Nikita