Учитывая следующий PHP класс:Как узнать, когда Fatal Fatal Error действительно является завуалированной Синтаксической ошибкой, и когда они происходят?
class someObject {
public function broken(){
return isset($this->something()) ? 'worked' : 'didnt';
}
public function something(){
return true;
}
public function notBroken(){
print('worked');
}
}
Допустим, я сейчас:
$obj= new someObject();
$obj->broken();
Учитывая вы не можете передать вызов функции Исети(), (это побочное ссылка), я ожидаю, что это сбой с фатальной ошибкой: PHP Fatal error: Can't use method return value in write context
Это нормально и ожидается.
Однако, скажем, я сейчас:
$obj= new someObject();
$obj->notBroken();
Учитывая, что я не ударять broken()
где-нибудь в этом исполнении, а ошибка в broken()
является Fatal Error (а не ошибка Анализировать) , Я бы не ожидал, что нормальный выход «сработает». FALSE! Он по-прежнему генерирует Fatal Error.
Вопрос:
Помимо просто не писать код, который имеет ошибки, есть какие-либо другие ошибки, которые не Parse ошибки, но по-прежнему вызывают ошибки во время выполнения? Я знаю только о: PHP Fatal error: Can't use method return value in write context
. Есть ли способ обнаружить эти ошибки? Есть ли специальное имя для такого типа ошибок?
ну, это не ошибка синтаксического анализа, это вполне допустимый синтаксис. Вот почему это приводит к фатальной ошибке, поскольку она не восстанавливается. Также вы можете использовать php -l для проверки таких ошибок в коде. Синтаксический анализатор все равно выдаст ошибку, и, таким образом, не будет выполняться «Ошибки разбора broken_parser.php», –