Múltiples constructores en PHP
PHP no permite múltiples constructores con diferentes firmas de argumentos en una clase. Esto plantea un desafío cuando diferentes escenarios requieren distintos procesos de inicialización.
Un enfoque consiste en definir dos métodos constructores:
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']; } }
Sin embargo, este enfoque viola las reglas de sintaxis del constructor de PHP.
Para evitar esta limitación, una solución común es crear métodos de fábrica estáticos:
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; } }
Con esta técnica, la inicialización se realiza mediante métodos estáticos en lugar del constructor:
$studentWithID = Student::withID(42); $studentWithRow = Student::withRow(['id' => 42, 'name' => 'John']);
Los métodos de fábrica estáticos proporcionan una forma flexible y fácil de mantener para abordar múltiples escenarios de inicialización mientras se adhieren a Principios de diseño de clases de PHP.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3