Как исправить Cannot use 'Object' as class name as it is reserved в PHP?
В PHP версии выше 7.2 добавлено новое зарезервированное слово object. В связи с этим теперь его нельзя использовать в качестве имени класса, трейта, а так же в именовании пространства имен. Разбираемся как это исправить..
Способ 1. Не обновляемся до PHP 7.2, используем ветку PHP 7.1.x.
Один из самых простых способов - не использовать PHP версии выше или равной 7.2, т.к. именно с версии PHP 7.2 слово object стало зарезервированным. Разумеется, если есть возможность избавиться от него в коде, то именно так и надо сделать, однако бывают случаи, когда это или нецелесообразно или невозможно по причинам большого объема кода и сложной миграции.
Способ 2. Меняем object на другое имя класса
Если объемы кода не очень большие, то находим класс с именем Object и меняем его на что-то альтернативное, например BaseObject. Так сделали, например, в фреймворке Yii2. В этом случае, придется заменить все наследования от Object на BaseObject, т.е. если было
1 2 3 4 5 |
class A extends Object { } |
придется найти все такие наследования и поменять на
1 2 3 4 5 |
class A extends BaseObject { } |
Способ 3. Комбинация 1 и второго способа
Остаемся на версии 7.1.x и начинаем постепенную миграцию на 7.2 (а если уже наступил 2019 год, то возможно сразу на 7.3). Это наиболее приемлемый способ если у Вас большие объемы кода и все надо тщательно проверить.
Другие зарезервированные в PHP слова
Не рекомендуется использовать (запретят в будущем)
- resource (с PHP 7)
- mixed (с PHP 7)
- numeric (с PHP 7)
Запрещено использовать, начиная с PHP7
- int (с PHP 7)
- float (с PHP 7)
- bool (с PHP 7)
- string (с PHP 7)
- true (с PHP 7)
- false (с PHP 7)
- null (с PHP 7)
- void (с PHP 7.1)
- iterable (с PHP 7.1)
- object (с PHP 7.2)
Запрещено использовать, начиная с PHP5
- __DIR__ (с PHP 5.3)
- __NAMESPACE__ (с PHP 5.3)
- goto (с PHP 5.3)
- namespace (с PHP 5.3)
- __TRAIT__ (с PHP 5.4)
- callable (с PHP 5.4)
- insteadof (с PHP 5.4)
- trait (с PHP 5.4)
- finally (с PHP 5.5)
- yield (с PHP 5.5)
Запрещено использовать
- __CLASS__
- __FILE__
- __FUNCTION__
- __LINE__
- __METHOD__
- __halt_compiler()
- abstract
- and
- array()
- as
- break
- case
- catch
- class
- clone
- const
- continue
- declare
- default
- die()
- do
- echo
- else
- elseif
- empty()
- enddeclare
- endfor
- endforeach
- endif
- endswitch
- endwhile
- eval()
- exit()
- extends
- final
- for
- foreach
- function
- global
- if
- implements
- include
- include_once
- instanceof
- interface
- isset()
- list()
- new
- or
- private
- protected
- public
- require
- require_once
- return
- static
- switch
- throw
- try
- unset()
- use
- var
- while
- xor
Author: | Tags: /
| Rating:
Leave a Reply