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;