Метод может вызываться только статически, если
- определяется как статический,
- не ссылается ни на какое нестатическое объявление
Это потому, что статические функции запускаются без какого-либо контекста, который делает их (незначительно) быстрее, чем стандартные методы, но с некоторыми ограничениями. См. Руководство по PHP для ключевого слова Static
В коде класс Bootstrap объявляет run () как статический, но он перегружает метод run () из родительского класса Zend_Application_Bootstrap_Bootstrap.
Если вы посмотрите на код родительского класса, вы увидите, что его функция run () не объявлена статической. Поскольку перегруженные методы должны соответствовать объявлению их родительского метода, это означает, что вы не можете объявить (или вызвать) BootStrap :: run () как статический.
Решение состоит в том, чтобы изменить ваш код, чтобы удалить статическое объявление.
public function run(){
self::setupEnvironment();
self::prepare();
$response = self::$frontController->dispatch();
self::sendResponse($response);
}
Я не использую Zend, поэтому не уверен, что в результате вы столкнетесь с дальнейшими статическими ошибками. По сути, проверьте ваш код по сравнению с учебником, и если он совпадает, то следуйте другому учебнику; что, должно быть, не прав.