Phalcon分发器
  Dispatcher\AbstractDispatcher
 GitHub上的源码
  -  
命名空间
    -  
使用
  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\DispatcherInterface
 GitHub上的源码
  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/*中抛出的异常将使用此类
 常量
 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;