Я просто прочитал отличную статью о шаблоне нулевого объекта (http://phpmaster.com/the-null-object-pattern-polymorphism-in-domain-models/), и я планирую реализовать его в каком-то существующем коде.php null object vs default null values
Мой вопрос: будет ли новый класс «нулевого класса» лучшим способом сделать это? Раньше я устанавливал значения по умолчанию в конструкторе как NULL. Тогда я мог бы просто создать пустые оболочки класса. Например:
class person{
private $_personId;
private $_name;
private $_email;
private $_phone;
public function __construct($_personId, $_name, $_email, $_phone = NULL){
//set the vars here
}
}
Тогда, если я хотел реальный объект, я хотел бы сделать:
$person = new person(1, 'John Doe', '[email protected]');
И если я хотел «нулевой» объект я хотел бы сделать:
$person = new person(NULL, NULL, NULL);
Есть любые подводные камни к этому подходу?
Как вы указали NULL по умолчанию для всех аргументов, '$ человека = новый человек(); 'будет столь же эффективным, как' $ человека = новый человек (NULL, NULL, NULL); ' –
вы правы, я ввернул этот вопрос. я отредактирую его. –
Если вы не делаете никаких реальных проверок, а Nulls разрешены, у NullObject нет большой причины, не так ли? С '__construct ($ _ personId = NULL, $ _name = NULL, $ _email = NULL)', вы заявляете, что все аргументы _optional_. Если они НЕ, вы не должны указывать их значения по умолчанию NULL, но просто укажите '__construct ($ _ personId, $ _name, $ _email)' (или может потребоваться первое, 2 после этого необязательного и т. Д.). Который будет генерировать ошибки, если аргументы не будут переданы. Сочные, полезные, точечные ошибки в вашем журнале, которые позволяют отлаживать так быстро. – Wrikken