[редактировать]

Язык PHP: Ошибки

Основы / Математика / Строки и текст / Массивы и списки / Разные ошибки / О сложном

Типы общих ошибок в DevelNext и как их интерпретировать.



Где отображаются ошибки после запуска проекта?

Все ошибки и не только отображаются в диалоге сборки проекта, обычно каждая возникшая ошибка содержит в себе информацию:

  1. Тип ошибки
  2. Текст ошибки
  3. Где произошла ошибка (в каком файле, в каком классе и в какой строчке).

Узнав точное место ошибки - файл и строку, вы сможете понять в каком месте кода у вас происходит ошибка.


Ошибка "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 и расскажите об ошибке.
  • Определите в какой строке произошла ошибка и постарайтесь заменить код на альтернативный вариант.