跳转到内容

Phalcon分发器

注意

所有类都以前缀命名Phalcon

Dispatcher\AbstractDispatcherAbstract

GitHub上的源码

  • 命名空间

    • Phalcon\Dispatcher
  • 使用

    • Exception
    • Phalcon\Di\AbstractInjectionAware
    • Phalcon\Di\DiInterface
    • Phalcon\Dispatcher\Exception
    • Phalcon\Events\EventsAwareInterface
    • Phalcon\Events\ManagerInterface
    • Phalcon\Filter\FilterInterface
    • Phalcon\Mvc\Model\Binder
    • Phalcon\Mvc\Model\BinderInterface
    • Phalcon\Support\Collection
  • 继承

    AbstractInjectionAware

  • 实现

    • DispatcherInterface
    • EventsAwareInterface

这是Phalcon\Mvc\Dispatcher和Phalcon\Cli\Dispatcher的基础类。该类不能直接实例化,你可以使用它来创建自己的分发器。

属性

/**
 * @var object|null
 */
protected $activeHandler;

/**
 * @var array
 */
protected $activeMethodMap;

/**
 * @var string
 */
protected $actionName = ;

/**
 * @var string
 */
protected $actionSuffix = Action;

/**
 * @var array
 */
protected $camelCaseMap;

/**
 * @var string
 */
protected $defaultAction = ;

/**
 * @var string
 */
protected $defaultNamespace = ;

/**
 * @var string
 */
protected $defaultHandler = ;

/**
 * @var array
 */
protected $handlerHashes;

/**
 * @var string
 */
protected $handlerName = ;

/**
 * @var string
 */
protected $handlerSuffix = ;

/**
 * @var ManagerInterface|null
 */
protected $eventsManager;

/**
 * @var bool
 */
protected $finished = false;

/**
 * @var bool
 */
protected $forwarded = false;

/**
 * @var bool
 */
protected $isControllerInitialize = false;

/**
 * @var mixed|null
 */
protected $lastHandler;

/**
 * @var BinderInterface|null
 */
protected $modelBinder;

/**
 * @var bool
 */
protected $modelBinding = false;

/**
 * @var string
 */
protected $moduleName = ;

/**
 * @var string
 */
protected $namespaceName = ;

/**
 * @var array
 */
protected $params;

/**
 * @var string|null
 */
protected $previousActionName = ;

/**
 * @var string|null
 */
protected $previousHandlerName = ;

/**
 * @var string|null
 */
protected $previousNamespaceName = ;

/**
 * @var string|null
 */
protected $returnedValue;

方法

public function callActionMethod( mixed $handler, string $actionMethod, array $params = [] );

public function dispatch(): mixed | bool;
通过调用适当的控制器动作(包括任何路由数据或注入参数)来处理路由器的结果。

public function forward( array $forward ): void;
将执行流程转发到另一个控制器/动作。

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

@throws PhalconException

public function getActionName(): string;
获取最后分发的动作名称

public function getActionSuffix(): string;
获取默认的动作后缀

public function getActiveMethod(): string;
返回调度器中将要/已执行的当前方法

public function getBoundModels(): array;
返回绑定实例中的绑定模型

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

public function getDefaultNamespace(): string;
返回默认的命名空间

public function getEventsManager(): ManagerInterface | null;
返回内部事件管理器

public function getHandlerClass(): string;
可能定位到用于分发请求的类名

public function getHandlerSuffix(): string;
获取默认的处理器后缀

public function getModelBinder(): BinderInterface | null;
获取模型绑定器

public function getModuleName(): string | null;
获取控制器类所在的模块

public function getNamespaceName(): string;
获取将被添加到当前处理器名称前的命名空间

public function getParam( mixed $param, mixed $filters = null, mixed $defaultValue = null ): mixed;
根据名称或数值索引获取参数

public function getParameter( mixed $param, mixed $filters = null, mixed $defaultValue = null ): mixed;
根据名称或数值索引获取参数

public function getParameters(): array;
获取动作参数

public function getParams(): array;
获取动作参数

@todo 在未来版本中移除此功能

public function getReturnedValue(): mixed;
返回最新分发动作返回的值

public function hasParam( mixed $param ): bool;
检查参数是否存在 @todo 在未来弃用此功能

public function hasParameter( mixed $param ): bool;
检查参数是否存在

public function isFinished(): bool;
检查分发循环是否完成或是否有更多待处理的控制器/任务

public function setActionName( string $actionName ): void;
设置将要分发的动作名称

public function setActionSuffix( string $actionSuffix ): void;
设置默认的动作后缀

public function setDefaultAction( string $actionName ): void;
设置默认的动作名称

public function setDefaultNamespace( string $defaultNamespace ): void;
设置默认的命名空间

public function setEventsManager( ManagerInterface $eventsManager ): void;
设置事件管理器

public function setHandlerSuffix( string $handlerSuffix ): void;
设置处理器的默认后缀

public function setModelBinder( BinderInterface $modelBinder, mixed $cache = null ): DispatcherInterface;
在分发期间启用模型绑定

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

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

        return $dispatcher;
    }
);

public function setModuleName( string $moduleName = null ): void;
设置控制器所在的模块(仅用于信息提供)

public function setNamespaceName( string $namespaceName ): void;
设置控制器类所在的命名空间

public function setParam( mixed $param, mixed $value ): void;
根据名称或数值索引设置参数 @todo 在未来弃用此功能

public function setParameter( mixed $param, mixed $value ): void;
根据名称或数值索引设置参数

public function setParameters( array $params ): void;
设置将要分发的动作参数

public function setParams( array $params ): void;
设置将要分发的动作参数 @todo 在未来弃用此功能

public function setReturnedValue( mixed $value ): void;
手动设置动作返回的最新值

public function wasForwarded(): bool;
检查当前执行的动作是否由另一个动作转发

protected function resolveEmptyProperties(): void;
设置空属性为默认值(如果有默认值可用)

protected function toCamelCase( string $input ): string;

Dispatcher\DispatcherInterfaceInterface

GitHub上的源码

  • 命名空间

    • Phalcon\Dispatcher
  • 使用

  • 继承

  • 实现

Phalcon\Dispatcher\AbstractDispatcher的接口

方法

public function dispatch(): mixed | bool;
根据路由参数分发处理动作

public function forward( array $forward ): void;
将执行流程转发到另一个控制器/动作

public function getActionName(): string;
获取最后一次分发的动作名称

public function getActionSuffix(): string;
获取默认的动作后缀

public function getHandlerSuffix(): string;
获取默认的处理器后缀

public function getParam( mixed $param, mixed $filters = null ): mixed;
根据名称或数值索引获取参数

public function getParameter( mixed $param, mixed $filters = null ): mixed;
根据名称或数值索引获取参数

public function getParameters(): array;
获取动作参数

public function getParams(): array;
获取动作参数

public function getReturnedValue(): mixed;
返回最新分发动作返回的值

public function hasParam( mixed $param ): bool;
检查参数是否存在

public function isFinished(): bool;
检查分发循环是否完成或是否有更多待处理的控制器/任务

public function setActionName( string $actionName ): void;
设置将要分发的动作名称

public function setActionSuffix( string $actionSuffix ): void;
设置默认的动作后缀

public function setDefaultAction( string $actionName ): void;
设置默认的动作名称

public function setDefaultNamespace( string $defaultNamespace ): void;
设置默认的命名空间

public function setHandlerSuffix( string $handlerSuffix ): void;
设置处理器的默认后缀

public function setModuleName( string $moduleName = null ): void;
设置应用程序所属的模块名称

public function setNamespaceName( string $namespaceName ): void;
设置控制器所属的命名空间

public function setParam( mixed $param, mixed $value ): void;
根据名称或数值索引设置参数

public function setParams( array $params ): void;
设置将要分发的动作参数

Dispatcher\Exception

GitHub上的源码

  • 命名空间

    • Phalcon\Dispatcher
  • 使用

  • 继承

    \Exception

  • 实现

在Phalcon\Dispatcher/*中抛出的异常将使用此类

常量

const EXCEPTION_ACTION_NOT_FOUND = 5;
const EXCEPTION_CYCLIC_ROUTING = 1;
const EXCEPTION_HANDLER_NOT_FOUND = 2;
const EXCEPTION_INVALID_HANDLER = 3;
const EXCEPTION_INVALID_PARAMS = 4;
const EXCEPTION_NO_DI = 0;