Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mencapai Fungsi Lebihan Pembina dalam PHP?
Lebihan Pembina dalam PHP: Penyelesaian Optimum
Dalam PHP, mengisytiharkan berbilang pembina dengan tandatangan argumen yang berbeza-beza dalam satu kelas tidak boleh dilaksanakan. Walau bagaimanapun, terdapat penyelesaian pragmatik untuk menangani cabaran ini.
Pertimbangkan senario berikut:
class Student { protected $id; protected $name; // etc. public function __construct($id) { $this->id = $id; // other members remain uninitialized } public function __construct($row_from_database) { $this->id = $row_from_database->id; $this->name = $row_from_database->name; // etc. } }
Untuk menangani isu ini, pendekatan berikut disyorkan:
<?php class Student { public function __construct() { // allocate necessary resources } public static function withID($id) { $instance = new self(); $instance->loadByID($id); return $instance; } public static function withRow(array $row) { $instance = new self(); $instance->fill($row); return $instance; } protected function loadByID($id) { // fetch data from database $row = my_awesome_db_access_stuff($id); $this->fill($row); } protected function fill(array $row) { // populate properties from array } } ?>
Dalam penyelesaian ini, bukannya mencipta berbilang pembina, kaedah pembantu statik digunakan. Dengan menggunakan kaedah ini, tika Pelajar baharu boleh dibuat dan dimulakan dengan nilai khusus:
// Create a student with a known ID $student = Student::withID($id); // Create a student using a database row array $student = Student::withRow($row);
Pendekatan ini mengelakkan potensi kerumitan pengekodan dan cabaran penyelenggaraan yang dikaitkan dengan mempunyai berbilang pembina dalam satu kelas PHP.
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Fungsi Lebihan Pembina dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!