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