Класс Phalcon\Mvc\Dispatcher

расширяет абстрактный класс Phalcon\Dispatcher

Реализует Phalcon\Events\EventsAwareInterface, Phalcon\Di\InjectionAwareInterface, Phalcon\DispatcherInterface, Phalcon\Mvc\DispatcherInterface

Source on GitHub

Диспетчеризация-это процесс принятия объекта запроса, извлечения имени модуля, имени контроллера, имени действия и дополнительных параметров, содержащихся в нем, а затем создания экземпляра контроллера и вызова действия этого контроллера.

<?php

$di = new \Phalcon\Di();

$dispatcher = new \Phalcon\Mvc\Dispatcher();

$dispatcher->setDI($di);

$dispatcher->setControllerName("posts");
$dispatcher->setActionName("index");
$dispatcher->setParams([]);

$controller = $dispatcher->dispatch();

Константы

integer EXCEPTION_NO_DI

integer EXCEPTION_CYCLIC_ROUTING

integer EXCEPTION_HANDLER_NOT_FOUND

integer EXCEPTION_INVALID_HANDLER

integer EXCEPTION_INVALID_PARAMS

integer EXCEPTION_ACTION_NOT_FOUND

Методы

public setControllerSuffix (mixed $controllerSuffix)

Устанавливает суффикс контроллера по умолчанию

public setDefaultController (mixed $controllerName)

Задает имя контроллера по умолчанию

public setControllerName (mixed $controllerName)

Задает имя контроллера для отправки

public getControllerName ()

Получает последнее отправленное имя контроллера

public getPreviousNamespaceName ()

Получает предыдущее отправленное имя пространства имен

public getPreviousControllerName ()

Получает предыдущее имя контроллера

public getPreviousActionName ()

Получает предыдущее имя отправленного действия

protected _throwDispatchException (mixed $message, [mixed $exceptionCode])

Создает внутреннее исключение

protected _handleException (Exception $exception)

Обрабатывает исключение пользователя

public forward (array $forward)

Перенаправляет поток выполнения другому контроллеру / действию.

<?php

use Phalcon\Events\Event;
use Phalcon\Mvc\Dispatcher;
use App\Backend\Bootstrap as Backend;
use App\Frontend\Bootstrap as Frontend;

// Registering modules
$modules = [
    "frontend" => [
        "className" => Frontend::class,
        "path"      => __DIR__ . "/app/Modules/Frontend/Bootstrap.php",
        "metadata"  => [
            "controllersNamespace" => "App\Frontend\Controllers",
        ],
    ],
    "backend" => [
        "className" => Backend::class,
        "path"      => __DIR__ . "/app/Modules/Backend/Bootstrap.php",
        "metadata"  => [
            "controllersNamespace" => "App\Backend\Controllers",
        ],
    ],
];

$application->registerModules($modules);

// Setting beforeForward listener
$eventsManager  = $di->getShared("eventsManager");

$eventsManager->attach(
    "dispatch:beforeForward",
    function(Event $event, Dispatcher $dispatcher, array $forward) use ($modules) {
        $metadata = $modules[$forward["module"]]["metadata"];

        $dispatcher->setModuleName($forward["module"]);
        $dispatcher->setNamespaceName($metadata["controllersNamespace"]);
    }
);

// Forward
$this->dispatcher->forward(
    [
        "module"     => "backend",
        "controller" => "posts",
        "action"     => "index",
    ]
);

public getControllerClass ()

Возможное имя класса контроллера, которое будет назначено для отправки запроса

public getLastController ()

Возвращает последний отправленный контроллер

public getActiveController ()

Возвращает активный контроллер в диспетчере

public setDI (Phalcon\DiInterface $dependencyInjector) inherited from Phalcon\Dispatcher

Устанавливает инжектор зависимостей

public getDI () inherited from Phalcon\Dispatcher

Возвращает внутренний инжектор зависимостей

public setEventsManager (Phalcon\Events\ManagerInterface $eventsManager) inherited from Phalcon\Dispatcher

Устанавливает диспетчер событий

public getEventsManager () inherited from Phalcon\Dispatcher

Возвращает внутренний менеджер событий

public setActionSuffix (mixed $actionSuffix) inherited from Phalcon\Dispatcher

Устанавливает суффикс действия по умолчанию

public getActionSuffix () inherited from Phalcon\Dispatcher

Возвращает суффикс действия по умолчанию

public setModuleName (mixed $moduleName) inherited from Phalcon\Dispatcher

Устанавливает модуль, в котором находится контроллер (только информативный)

public getModuleName () inherited from Phalcon\Dispatcher

Возвращает модуль, в котором находится класс контроллера

public setNamespaceName (mixed $namespaceName) inherited from Phalcon\Dispatcher

Задает пространство имен, где класс контроллера

public getNamespaceName () inherited from Phalcon\Dispatcher

Возвращает пространство имен, добавляемое к текущему имени обработчика

public setDefaultNamespace (mixed $namespaceName) inherited from Phalcon\Dispatcher

Задает пространство имен по умолчанию

public getDefaultNamespace () inherited from Phalcon\Dispatcher

Возвращает пространство имен по умолчанию

public setDefaultAction (mixed $actionName) inherited from Phalcon\Dispatcher

Задает имя действия по умолчанию

public setActionName (mixed $actionName) inherited from Phalcon\Dispatcher

Задает имя действия для отправки

public getActionName () inherited from Phalcon\Dispatcher

Получает последнее имя отправленного действия

public setParams (array $params) inherited from Phalcon\Dispatcher

Задает параметры действий для отправки

public getParams () inherited from Phalcon\Dispatcher

Получает параметры действия

public setParam (mixed $param, mixed $value) inherited from Phalcon\Dispatcher

Задаёт параметр param по его имени или числовому индексу

public mixed getParam (mixed $param, [string | array $filters], [mixed $defaultValue]) inherited from Phalcon\Dispatcher

Получает параметр param по его имени или числовому индексу

public boolean hasParam (mixed $param) inherited from Phalcon\Dispatcher

Проверяет, существует ли параметр param

public getActiveMethod () inherited from Phalcon\Dispatcher

Возвращает текущий метод, который должен быть выполнен в диспетчере

public isFinished () inherited from Phalcon\Dispatcher

Проверяет, завершен ли цикл отправки или имеется больше диспетчеров/задач для отправки

public setReturnedValue (mixed $value) inherited from Phalcon\Dispatcher

Устанавливает последнее возвращаемое значение вручную

public mixed getReturnedValue () inherited from Phalcon\Dispatcher

Возвращает значение, возвращенное последним отправленным действием

public setModelBinding (mixed $value, [mixed $cache]) inherited from Phalcon\Dispatcher

Включить/отключить привязку модели во время отправки

<?php

$di->set('dispatcher', function() {
    $dispatcher = new Dispatcher();

    $dispatcher->setModelBinding(true, 'cache');
    return $dispatcher;
});

public setModelBinder (Phalcon\Mvc\Model\BinderInterface $modelBinder, [mixed $cache]) inherited from Phalcon\Dispatcher

Включить привязку модели во время отправки

<?php

$di->set('dispatcher', function() {
    $dispatcher = new Dispatcher();

    $dispatcher->setModelBinder(new Binder(), 'cache');
    return $dispatcher;
});

public getModelBinder () inherited from Phalcon\Dispatcher

Получает связыватель модели

public object dispatch () inherited from Phalcon\Dispatcher

Отправляет действие дескриптора с учетом параметров маршрутизации

protected object _dispatch () inherited from Phalcon\Dispatcher

Отправляет действие дескриптора с учетом параметров маршрутизации

public wasForwarded () inherited from Phalcon\Dispatcher

Проверить, было ли текущее выполненное действие переадресовано другим

public getHandlerClass () inherited from Phalcon\Dispatcher

Возможное имя класса, которое будет расположено для отправки запроса

public callActionMethod (mixed $handler, mixed $actionMethod, [array $params]) inherited from Phalcon\Dispatcher

...

public getBoundModels () inherited from Phalcon\Dispatcher

Возвращает привязанные модели из экземпляра связывателя

<?php

class UserController extends Controller
{
    public function showAction(User $user)
    {
        $boundModels = $this->dispatcher->getBoundModels(); // return array with $user
    }
}

protected _resolveEmptyProperties () inherited from Phalcon\Dispatcher

Задаёт для пустых свойств значения по умолчанию (где доступны значения по умолчанию)