Dalam siri ini, saya akan membincangkan asas-asas Pengaturcaraan Berorientasikan Objek PHP (OOP). Kandungan akan disusun mengikut bahagian berurutan, setiap satu memfokuskan pada topik tertentu. Jika anda seorang pemula atau tidak biasa dengan konsep OOP, siri ini direka bentuk untuk membimbing anda langkah demi langkah. Dalam bahagian ini, saya akan membincangkan tentang pembina dan pemusnah dalam PHP. Mari kita mulakan perjalanan belajar PHP OOP bersama-sama!
Mari kita cuba memahami dahulu apakah itu Pembina? Secara ringkas, pembina ialah kaedah khas yang dipanggil secara automatik apabila objek kelas dicipta. Pembina digunakan untuk memulakan sifat objek. Ia adalah kaedah ajaib dalam PHP. Tetapi sekarang kita perlu memahami tentang pembina secara terperinci. Mari lihat contoh kod dahulu.
class Car { public $name; public $color; public function setValue(string $name, string $color) { $this->name = $name; $this->color = $color; } public function getValue() { echo "Car name: $this->name\n"; echo "Car color: $this->color\n"; } } $toyota = new Car; $toyota->setValue('Toyota', 'Red'); $toyota->getValue();
Dalam contoh di atas, atau dalam bahagian sebelumnya, kami menetapkan nilai objek menggunakan kaedah. Ini dipanggil Kaedah Setter, ia bermakna selepas mencipta objek kelas, jika kita menetapkan nilai menggunakan kaedah objek itu, ia dirujuk sebagai Kaedah Setter. Walau bagaimanapun, kami boleh memudahkan proses ini menggunakan kaedah ajaib PHP terbina dalam. Kaedah ini dipanggil pembina, dan dalam PHP, ia ditakrifkan menggunakan __construct(). Mari lihat contoh berikut.
class Car { public $name; public $color; function __construct(string $name, string $color) { $this->name = $name; $this->color = $color; } public function getValue() { echo "Car name: $this->name\n"; echo "Car color: $this->color\n"; } } $toyota = new Car('Toyota', 'Red'); $toyota->getValue();
Dalam contoh ini, bukannya menggunakan kaedah setValue, kami telah menggunakan kaedah __construct(). Jadi, apakah kelebihan menggunakan __construct()? Dalam contoh sebelumnya, selepas mencipta objek kelas Kereta, kami perlu lulus nilai untuk setiap kereta menggunakan kaedah setValue. Tetapi sekarang, dengan menggunakan __construct(), kita boleh lulus nilai pada masa penciptaan objek dan kita tidak perlu memanggil kaedah tambahan.
Tetapi sekarang, persoalan timbul: Kami tidak memanggil __construct(), jadi bagaimanakah ia menerima nilai dan menetapkannya kepada pembolehubah?
new Car('Toyota', 'Red');
Apabila kita menggunakan __construct() di dalam kelas, dan pembina itu menerima nilai dari luar, kita boleh menghantar nilai dalam kurungan pertama apabila mencipta objek kelas. Sebaik sahaja kami mencipta objek dengan cara ini, kaedah __construct() dipanggil secara automatik. Dalam erti kata lain, setiap kali kita mencipta contoh kelas, kaedah __construct() ia akan memanggil serta-merta. Inilah cara kita boleh memulakan sifat objek menggunakan pembina. Memandangkan __construct() ialah kaedah ajaib, jadi kita tidak perlu memanggilnya secara eksplisit. Ia akan berjalan secara automatik dalam senario tertentu untuk melaksanakan tugas tertentu.
Pemusnah juga merupakan kaedah ajaib dalam PHP. Apabila kita mencipta objek menggunakan kelas, kita melaksanakan pelbagai tugas dengan objek itu. Tetapi apabila tugas selesai, ia bermakna pemusnah akan dicetuskan apabila objek dimusnahkan. Pemusnah ditakrifkan dalam PHP menggunakan __destruct().
Di sini, adalah penting untuk ambil perhatian bahawa jika kita mencipta berbilang objek menggunakan kelas, kaedah __destruct() akan dipanggil untuk setiap objek apabila kesemuanya dimusnahkan. Dalam erti kata lain, kaedah __destruct() akan dipanggil seberapa banyak bilangan objek yang dibuat menggunakan kelas tersebut. Mari lihat contoh berikut.
class Car { public $name; public $color; public function setValue(string $name, string $color) { $this->name = $name; $this->color = $color; } public function getValue() { echo "Car name: $this->name\n"; echo "Car color: $this->color\n"; } } $toyota = new Car; $toyota->setValue('Toyota', 'Red'); $toyota->getValue();
Jika kita menjalankan kod ini, kita akan melihat output berikut.
class Car { public $name; public $color; function __construct(string $name, string $color) { $this->name = $name; $this->color = $color; } public function getValue() { echo "Car name: $this->name\n"; echo "Car color: $this->color\n"; } } $toyota = new Car('Toyota', 'Red'); $toyota->getValue();
Sekarang, anda mungkin tertanya-tanya dalam kes yang mana kita harus menggunakan kaedah __destruct(). Apabila kita bekerja dengan fail atau pangkalan data, kita perlu membukanya, tetapi setelah tugas kita selesai, maka kita perlu menutup fail atau pangkalan data. Dalam kes sedemikian, kita boleh menggunakan kaedah __destruct(). Selain itu, terdapat banyak kes penggunaan kehidupan sebenar untuk kaedah __destruct().
Saya harap sekarang kita mempunyai sedikit pemahaman tentang __construct() dan __destruct(). Selain daripada kaedah ini, terdapat kaedah ajaib lain yang penting dalam PHP, seperti __call(), __callStatic(), dsb. Kita juga boleh menggunakan kaedah ini, kerana mereka melaksanakan tugas tertentu dalam pelbagai senario dalam kelas.
Jadi, itu sahaja untuk hari ini. Kami akan bercakap lebih lanjut mengenai topik lain dalam pelajaran seterusnya. Nantikan! Selamat mengekod!
Anda boleh berhubung dengan saya di Linkedin dan GitHub.
Atas ialah kandungan terperinci PHP OOP Part-Constructor and Destructor. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!