Phalcon dispatcher
NOTE
All classes are prefixed with Phalcon
Dispatcher\AbstractDispatcher¶
Abstract Source on GitHub
This is the base class for Phalcon\Mvc\Dispatcher and Phalcon\Cli\Dispatcher. This class can't be instantiated directly, you can use it to create your own dispatchers.
Error protocol¶
Subclasses (including third-party ones) MUST implement the two abstract error hooks {@see throwDispatchException()} and {@see handleException()}. The dispatch loop calls them on every error/exception path; a subclass that omits them cannot be loaded.
Hook channels¶
A single lifecycle point can be intercepted through three independent channels. For any given point they run in this order:
- Events-manager listener — e.g.
dispatch:beforeExecuteRoute. A listener returningfalsecancels; callingforward()re-enters the loop; throwing routes through {@see handleException()}. - Duck-typed handler method — e.g. a
beforeExecuteRoute()method on the controller/task itself (presence is cached per class). Samefalse/forward()cancellation semantics as the event. dispatch:beforeCallActionobserver — fired by {@see callActionMethod()} with aPhalcon\Support\Collectioncarrying the mutable keyshandler,actionandparams. Listeners may rewrite those keys to change what gets invoked; the substituted callable is re-validated before the call.dispatch:afterCallActionreceives the same Collection plus aresultkey.
stdClassPhalcon\Di\AbstractInjectionAwarePhalcon\Dispatcher\AbstractDispatcher— implementsPhalcon\Dispatcher\DispatcherInterface,Phalcon\Events\EventsAwareInterface
Uses Exception · Phalcon\Di\AbstractInjectionAware · Phalcon\Di\DiInterface · Phalcon\Dispatcher\Exception · Phalcon\Dispatcher\Exceptions\ForwardInInitializeForbidden · Phalcon\Events\EventsAwareInterface · Phalcon\Events\ManagerInterface · Phalcon\Filter\FilterInterface · Phalcon\Mvc\Model\Binder · Phalcon\Mvc\Model\BinderInterface · Phalcon\Support\Collection
Method Summary¶
public callActionMethod(mixed $handler,string $actionMethod,array $params = []) public mixed|bool dispatch() Process the results of the router by calling into the appropriate public void forward( array $forward ) Forwards the execution flow to another controller/action. public string getActionName() Gets the latest dispatched action name public string getActionSuffix() Gets the default action suffix public string getActiveMethod() Returns the current method to be/executed in the dispatcher public array getBoundModels() Returns bound models from binder instance public string getDefaultNamespace() Returns the default namespace public ManagerInterface|null getEventsManager() Returns the internal event manager public string getHandlerClass() Possible class name that will be located to dispatch the request public string getHandlerSuffix() Gets the default handler suffix public BinderInterface|null getModelBinder() Gets model binder public string|null getModuleName() Gets the module where the controller class is public string getNamespaceName() Gets a namespace to be prepended to the current handler name public mixed getParam(mixed $param,mixed $filters = null,mixed $defaultValue = null) Gets a param by its name or numeric index public mixed getParameter(mixed $param,mixed $filters = null,mixed $defaultValue = null) Gets a param by its name or numeric index public array getParameters() Gets action params public array getParams() Gets action params public string getPreviousActionName() Gets previous dispatched action name public string getPreviousHandlerName() Gets previous dispatched handler name public string getPreviousNamespaceName() Gets previous dispatched namespace name public mixed getReturnedValue() Returns value returned by the latest dispatched action public bool hasParam( mixed $param ) Check if a param exists public bool hasParameter( mixed $param ) Check if a param exists public bool isFinished() Checks if the dispatch loop is finished or has more pendent public void setActionName( string $actionName ) Sets the action name to be dispatched public void setActionSuffix( string $actionSuffix ) Sets the default action suffix public void setDefaultAction( string $actionName ) Sets the default action name public void setDefaultNamespace( string $defaultNamespace ) Sets the default namespace public void setEventsManager( ManagerInterface $eventsManager ) Sets the events manager public void setHandlerSuffix( string $handlerSuffix ) Sets the default suffix for the handler public DispatcherInterface setModelBinder(BinderInterface $modelBinder,mixed $cache = null) Enable model binding during dispatch public void setModuleName( string $moduleName = null ) Sets the module where the controller is (only informative) public void setNamespaceName( string $namespaceName ) Sets the namespace where the controller class is public void setParam(mixed $param,mixed $value) Set a param by its name or numeric index public void setParameter(mixed $param,mixed $value) Set a param by its name or numeric index public void setParameters( array $params ) Sets action params to be dispatched public void setParams( array $params ) Sets action params to be dispatched public void setReturnedValue( mixed $value ) Sets the latest returned value by an action manually public bool wasForwarded() Check if the current executed action was forwarded by another one protected handleException( \Exception $exception ) Handles a user exception triggered inside the dispatch loop. protected void resolveEmptyProperties() Set empty properties to their defaults (where defaults are available) protected throwDispatchException(string $message,int $exceptionCode = 0) Throws an internal dispatch exception. protected string toCamelCase( string $input ) Properties¶
protected string $actionName = "" protected string $actionSuffix = "Action" protected object|null $activeHandler = null protected array $activeMethodMap = [] protected array $camelCaseMap = [] protected string $defaultAction = "" protected string $defaultHandler = "" protected string $defaultNamespace = "" protected ManagerInterface|null $eventsManager = null protected bool $finished = false protected bool $forwarded = false protected array $handlerHashes = [] protected array $handlerHookCache = [] protected string $handlerName = "" protected string $handlerSuffix = "" protected bool $isControllerInitialize = false protected mixed|null $lastHandler = null protected BinderInterface|null $modelBinder = null protected bool $modelBinding = false protected string $moduleName = "" protected string $namespaceName = "" protected array $params = [] protected string|null $previousActionName = "" protected string|null $previousHandlerName = "" protected string|null $previousNamespaceName = "" protected string|null $returnedValue = null Methods¶
callActionMethod()¶
dispatch()¶
Process the results of the router by calling into the appropriate controller action(s) including any routing data or injected parameters.
forward()¶
Forwards the execution flow to another controller/action.
getActionName()¶
Gets the latest dispatched action name
getActionSuffix()¶
Gets the default action suffix
getActiveMethod()¶
Returns the current method to be/executed in the dispatcher
getBoundModels()¶
Returns bound models from binder instance
class UserController extends Controller
{
public function showAction(User $user)
{
// return array with $user
$boundModels = $this->dispatcher->getBoundModels();
}
}
getDefaultNamespace()¶
Returns the default namespace
getEventsManager()¶
Returns the internal event manager
getHandlerClass()¶
Possible class name that will be located to dispatch the request
getHandlerSuffix()¶
Gets the default handler suffix
getModelBinder()¶
Gets model binder
getModuleName()¶
Gets the module where the controller class is
getNamespaceName()¶
Gets a namespace to be prepended to the current handler name
getParam()¶
Gets a param by its name or numeric index
Note: The interface declares getParam(param, filters = null) without the defaultValue argument, so code typed against DispatcherInterface cannot use the default-value feature. This signature drift is intentional for now; the interface and implementation will be aligned in the next major version.
getParameter()¶
public function getParameter(
mixed $param,
mixed $filters = null,
mixed $defaultValue = null
): mixed;
Gets a param by its name or numeric index
getParameters()¶
Gets action params
getParams()¶
Gets action params
getPreviousActionName()¶
Gets previous dispatched action name
getPreviousHandlerName()¶
Gets previous dispatched handler name
getPreviousNamespaceName()¶
Gets previous dispatched namespace name
getReturnedValue()¶
Returns value returned by the latest dispatched action
hasParam()¶
Check if a param exists
hasParameter()¶
Check if a param exists
isFinished()¶
Checks if the dispatch loop is finished or has more pendent controllers/tasks to dispatch
setActionName()¶
Sets the action name to be dispatched
setActionSuffix()¶
Sets the default action suffix
setDefaultAction()¶
Sets the default action name
setDefaultNamespace()¶
Sets the default namespace
setEventsManager()¶
Sets the events manager
setHandlerSuffix()¶
Sets the default suffix for the handler
setModelBinder()¶
public function setModelBinder(
BinderInterface $modelBinder,
mixed $cache = null
): DispatcherInterface;
Enable model binding during dispatch
$di->set(
'dispatcher',
function() {
$dispatcher = new Dispatcher();
$dispatcher->setModelBinder(
new Binder(),
'cache'
);
return $dispatcher;
}
);
setModuleName()¶
Sets the module where the controller is (only informative)
setNamespaceName()¶
Sets the namespace where the controller class is
setParam()¶
Set a param by its name or numeric index
setParameter()¶
Set a param by its name or numeric index
setParameters()¶
Sets action params to be dispatched
setParams()¶
Sets action params to be dispatched
setReturnedValue()¶
Sets the latest returned value by an action manually
wasForwarded()¶
Check if the current executed action was forwarded by another one
handleException()¶
Handles a user exception triggered inside the dispatch loop.
Subclasses implement the namespace-specific behavior (typically firing the dispatch:beforeException event so listeners may forward or swallow the exception).
resolveEmptyProperties()¶
Set empty properties to their defaults (where defaults are available)
throwDispatchException()¶
Throws an internal dispatch exception.
Subclasses build the namespace-specific exception and route it through {@see handleException()} before throwing it when it was not handled.
toCamelCase()¶
Dispatcher\DispatcherInterface¶
Interface Source on GitHub
Interface for Phalcon\Dispatcher\AbstractDispatcher
Phalcon\Contracts\Dispatcher\DispatcherPhalcon\Dispatcher\DispatcherInterface
Uses Phalcon\Contracts\Dispatcher\Dispatcher
Dispatcher\Exception¶
Class Source on GitHub
Exceptions thrown in Phalcon\Dispatcher/* will use this class
\ExceptionPhalcon\Dispatcher\Exception
Constants¶
int EXCEPTION_ACTION_NOT_FOUND = 5 int EXCEPTION_CYCLIC_ROUTING = 1 int EXCEPTION_HANDLER_NOT_FOUND = 2 int EXCEPTION_INVALID_HANDLER = 3 int EXCEPTION_INVALID_PARAMS = 4 int EXCEPTION_NO_DI = 0 Dispatcher\Exceptions\ForwardInInitializeForbidden¶
Class Source on GitHub
\ExceptionPhalcon\Dispatcher\ExceptionPhalcon\Dispatcher\Exceptions\ForwardInInitializeForbidden
Uses Phalcon\Dispatcher\Exception