Vários construtores em PHP
PHP não permite vários construtores com assinaturas de argumentos diferentes em uma classe. Isso representa um desafio quando diferentes cenários exigem processos de inicialização distintos.
Uma abordagem é definir dois métodos construtores:
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']; } }
No entanto, essa abordagem viola as regras de sintaxe do construtor do PHP.
Para contornar essa limitação, uma solução comum é criar 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; } }
Com esta técnica, a inicialização é realizada através de métodos estáticos em vez do construtor:
$studentWithID = Student::withID(42); $studentWithRow = Student::withRow(['id' => 42, 'name' => 'John']);
Os métodos estáticos de fábrica fornecem uma maneira flexível e sustentável de lidar com vários cenários de inicialização enquanto aderem a Princípios de design de classes do PHP.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3