При написании моего первого PHP-класса и при обнаружении проблемы мой метод __construct
следующий:
public function __construct($foo,$bar) {
$this->foo = $foo;
$this->bar = $bar;
}
Требуются и $foo
, и $bar
, без них методы не будутРабота.Это нормально, когда они не определены, когда объект создается, например, так:
$var = new Class();
Поскольку это вызывает исключение (например, класс требует 2 параметра, ни один не установлен).Но если они установлены, но не имеют правильный тип, например, так:
$var = new Class('33','ddd');
Мои методы не будут работать, поскольку переменные имеют неправильный тип.
Где я должен проверять эти?В конструкторе или в каждом методе?
Мое решение, которое я сейчас использую, работает, но я не уверен, что это правильный путь:
// $foo needs to be a string with letters only
// $bar needs to be an integer
public function __construct($foo,$bar) {
$this->foo = $foo;
$this->bar = $bar;
if(!is_numeric($bar)){
// Throw exception
}
elseif(other validation case)
etc...
}
Концепции ОО-программирования довольно новы для меня, поэтому ссылки на любой имеющийся у вас справочный материал были бы очень благодарны.