Berbilang Pembina dalam PHP
PHP tidak membenarkan berbilang pembina dengan tandatangan argumen berbeza dalam kelas. Ini menimbulkan cabaran apabila senario berbeza memerlukan proses pemulaan yang berbeza.
Satu pendekatan adalah untuk mentakrifkan dua kaedah pembina:
class Student { public function __construct($id) { $this->id = $id; } public function __construct(array $row_from_database) { $this->id = $row_from_database['id']; $this->name = $row_from_database['name']; } }
Walau bagaimanapun, pendekatan ini melanggar peraturan sintaks pembina PHP.
Untuk memintas had ini, penyelesaian biasa adalah dengan mencipta kaedah kilang statik sebaliknya:
class Student { public function __construct() { // Allocate resources here } public static function withID($id) { $student = new self(); $student->id = $id; return $student; } public static function withRow(array $row) { $student = new self(); $student->id = $row['id']; $student->name = $row['name']; return $student; } }
Dengan teknik ini, pemulaan dilakukan melalui kaedah statik dan bukannya pembina:
$studentWithID = Student::withID(42); $studentWithRow = Student::withRow(['id' => 42, 'name' => 'John']);
Kaedah kilang statik menyediakan cara yang fleksibel dan boleh diselenggara untuk menangani pelbagai senario permulaan sementara mematuhi prinsip reka bentuk kelas PHP.
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Mengendalikan Berbilang Senario Permulaan dalam Kelas PHP Tanpa Berbilang Pembina?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!