Язык PHP: Ошибки
Основы / Математика / Строки и текст / Массивы и списки / Разные ошибки / О сложном
Типы общих ошибок в DevelNext и как их интерпретировать.
- Где отображаются ошибки после запуска проекта?
- Ошибка "Call to undefined function"
- Ошибка "Class not found"
- Ошибка "Call to undefined method"
- Ошибка "Cannot get property of non-object"
- Ошибка "Cannot set property of non-object"
- Ошибка "Cannot use object as array"
- Ошибка "Syntax error, unexpected else"
- Ошибки "ParseException Syntax error"
- Ошибка "NullPointerException"
Где отображаются ошибки после запуска проекта?
Все ошибки и не только отображаются в диалоге сборки проекта, обычно каждая возникшая ошибка содержит в себе информацию:
- Тип ошибки
- Текст ошибки
- Где произошла ошибка (в каком файле, в каком классе и в какой строчке).
Узнав точное место ошибки - файл и строку, вы сможете понять в каком месте кода у вас происходит ошибка.
Ошибка "Call to undefined function"
Это ошибка в вашем кода, она означает, что вы пытаетесь вызвать функцию, которой не существует.
Варианты решения проблемы
- Возможно вы ошиблись в названии функции, проверьте это.
- Возможно такой функции нет, т.к. не подключено расширение или ее никогда не существовало.
- Попробуйте поискать аналог функции, возможно он существует.
Ошибка "Class not found"
Данная ошибка возникает при обращении к несуществующему классу.
Варианты решения проблемы
- Возможно вы ошиблись в названии класса, проверьте это.
- Возможно вы не подключили класс через конструкцию
use <полное имя класса>
- узнайте полное имя класса.
- Возможно такого класса никогда и не существовало.
- Попробуйте найти аналог класса с другим названием.
Ошибка "Call to undefined method"
Ошибка возникает при попытке вызвать метод у объекта, которого нет.
Варианты решения проблемы
- Возможно вы ошиблись в названии метода, проверьте это.
- Возможно действительно, метода у класса не существует.
- Возможно вы думаете что вызываете метод одно класса, а по факту вы вызываете метод от другого класса.
- проверьте, от имени какого класса вы вызываете метод.
- Возможно вы вызываете не публичный метод, а приватный (private) или защищенный (protected).
Ошибка "Cannot get property of non-object"
Частая ошибка новичков и по невнимательности, возникает когда вы пытаетесь обратиться к объекту, которого не существует, в develnext это часто бывает объект формы, например:
alert($this->edit->text);
Если на форме не будет компонента под id = edit
, то возникнет ошибка Cannot get 'text' property of non-object
.
Варианты решения проблемы
- Вы забыли добавить компонент на форму под верным
id
. - Вы неправильно назвали свой компонент не с тем
id
, а в коде используйте другой.- используйте один и тот же
id
и в коде и в форме.
- используйте один и тот же
- Вы переименовали
id
объекта, но забыли поменять его в вашем коде- совет, старайтесь сразу придумывать нормальные
id
вашим компонентам.
- совет, старайтесь сразу придумывать нормальные
- Вы скопировали чужой код, который предполагает наличие некоторых компонентов на форме.
- Не обязательно объектом может быть объект формы, им может быть и объект модуля и вообще любой другой объект из php.
- Возможно вы обращаетесь к компоненту модуля из формы, а модуль к форме не подключен.
- подключите модуль к форме.
Ошибка "Cannot set property of non-object"
Ошибка возникает при попытке задать свойство объекту, которого не существует:
Варианты решения проблемы
- Возможно вы обращаетесь к несуществующему объекту формы или модуля.
- Возможно вы обращаетесь к компоненту модуля из формы, а модуль не подключен к форме.
- подключите модуль к форме.
- Возможно вы перепутали
id
компонента и используете неверный. - Возможно вы переименовали
id
компонента, а в коде изменить его забыли.
Ошибка "Cannot use object as array"
Редкая ошибка, возникает тогда, когда вы пытаетесь к объекту обратиться так, словно это массив. При обращении к объекту как к массиву возникает данная ошибка, например:
$text = $this->edit['foobar'];
Здесь у нас $this->edit
это объект формы, мы к нему обратились так, словно думаем, что это массив и получаем эту ошибку.
Варианты решения проблемы
- Не пытайтесь работать с объектом, как с массивом.
- Возможно вы где-то что-то напутали, и в переменной хранится не массив, а объект.
- Возможно вы передали неверный аргумент в функцию или метод, вы передали туда объект, а должны были передать массив.
Ошибка "Syntax error, unexpected else"
Ошибка возникает тогда, когда вы ошиблись в написании else
и if
, например else
стоит не сразу после закрывающей скобки блока if
, или вообще else
использовался без if
, например:
if ($success) {
}
alert('!!!');
else {
}
В данном коде ошибка, else
необходимо писать сразу после закрывающей скобки.
Ошибки "ParseException Syntax error"
Таких ошибок может возникать множество вариантов, однако все они означают одно и тоже:
ParseException говорит о том, что вы нарушили правила написания кода языка PHP!
Варианты решения проблемы
- Посмотрите в каком файле и на какой строке у вас ошибка.
- Проверьте правильность написанного кода с точки зрения разрешенного синтаксиса.
- Возможно вы где-то пропустили 1 закрывающую скобку, проверьте и это.
- Возможно вы забыли закрыть кавычки строки, например написали
'Hello World
без закрывающей кавычки.
Ошибка "NullPointerException"
Часто эта ошибка связана с багами в DevelNext и ядре.
Решение проблемы
- Свяжитесь с авторами DevelNext и расскажите об ошибке.
- Определите в какой строке произошла ошибка и постарайтесь заменить код на альтернативный вариант.