Я все еще играю с PHP и ООП. Но не понимаю, как отменить ошибки из класса.Обработка ошибок в классе PHP
индексный файл
include 'class.php';
$test = new magic('', '', '33');
$test->getfullname();
foreach ($test->get_errors() as $error) {
echo $error . '<br>';
}
класс:
class magic
{
private $name;
private $surname;
private $age;
private $errors = array();
function __construct($name, $surname, $age)
{
$this->name = $name;
$this->surname = $surname;
$this->age = $age;
}
public function get_errors()
{
return $this->errors;
}
public function getname()
{
if (!empty($this->name)) {
return true;
} else {
array_push($this->errors, 'Please check name');
return false;
}
}
public function getsurname()
{
if (!empty($this->surname)) {
return true;
} else {
array_push($this->errors, 'Please check surname');
return false;
}
}
public function getfullname()
{
if (($this->getname()) && ($this->getsurname())) {
echo $this->name . ' ' . $this->surname;
}
}
}
Мой вопрос: почему, когда имя или фамилия пусто, то возвращение пожалуйста, проверьте имя или фамилию, но когда оба пусто, то возвращение только первый? Как свечать эти ошибки типа в классе PHP и что лучше всего делать? Я не думаю, что могу использовать исключения try/catch в этом сценарии.
короткого замыкания оценки. если 'getName()' возвращает false, тогда PHP знает, что ваш '&&' НИКОГДА не может оценивать значение true, поэтому он не беспокоится о вызове 'getSurname', потому что его возвращаемое значение не имеет значения для определения значения' && '. –
@MarcB, но в целом это в значительной степени верно? –
http://php.net/manual/en/language.operators.logical.php. обратите внимание на первые 4 строки кода в примерах. –