Изменена ли функция диспетчеризации в Phalcon PHP?

Я прочитал кое-что в документации Phalcon об диспетчеризации (смотреть здесь). Я использовал до "afterExecuteRoute", но просто проверьте сегодня документацию об этом... и я нашел кое-что, что меня беспокоит (о параметрах):

public function afterExecuteRoute(Event $event, Dispatcher $dispatcher)
{
    // Executed before every found action
}

Это точная часть кода из документации. Но если я поместил это в свой код, я получу «Перехватываемая фатальная ошибка» о:

Аргумент 1, переданный в Adapters\Controllers::afterExecuteRoute(), должен быть экземпляром Phalcon\Events\Event, переданным экземпляром Phalcon\Mvc\Dispatcher

Итак... документация неверна? Или это будет правильно в следующей версии Phalcon?

Спасибо


person Boris Delev    schedule 10.07.2016    source источник
comment
Какую версию php вы используете и версию phalcon?   -  person Juri    schedule 11.07.2016
comment
Версия Phalcon 2.1.0r :) Спасибо!   -  person Boris Delev    schedule 11.07.2016
comment
И какая версия пхп? 7 или 5,6? Если это 7, убедитесь, что вы скомпилировали его, используя последний zephir, и у вас есть последний phalcon 2.1.0r. О, я имею в виду, я только что видел, что у вас есть Adapters\Controllers::afterExecuteRoute() Тогда в этом случае $event никогда не передается ни одному из этих методов. $event доступен только в том случае, если вы используете диспетчер событий. Просто только объект диспетчера :)   -  person Juri    schedule 11.07.2016
comment
нет-нет, я не с 7... в настоящее время версия PHP 5.6.3 (win 32). В любом случае, я думаю, что $event неправильно размещен в документации... в ссылке, которую я предоставляю для диспетчера, пример находится в/для контроллера.   -  person Boris Delev    schedule 11.07.2016
comment
Все верно. Вы только что добавили метод в контроллер. $event происходит ТОЛЬКО В диспетчере событий, очевидно. В контроллере с методом afterExecuteRoute события не запускаются, этому методу передается только $dispatcher. Просто удалите аргумент $event :)   -  person Juri    schedule 13.07.2016
comment
Да, мне отвечают в phalcon git hub. Они исправят документацию.   -  person Boris Delev    schedule 13.07.2016


Ответы (1)


Действительно, похоже, что в документации есть несоответствие.

Этот пример взят из документов контроллера. что первый параметр beforeExecuteRoute должен быть объектом Dispatcher.

class PostsController extends Phalcon\Mvc\Controller
{
    public function beforeExecuteRoute($dispatcher)
    {
        // ...
    }
}
person Timothy    schedule 11.07.2016
comment
Если это делается в контроллере, то да - передается только $dispatcher, потому что нет события. Если используется диспетчер событий, у вас всегда будет событие в качестве первого аргумента и объект, который вы передаете методу огня. - person Juri; 11.07.2016