本文整理汇总了PHP中Action::EventShutdown方法的典型用法代码示例。如果您正苦于以下问题:PHP Action::EventShutdown方法的具体用法?PHP Action::EventShutdown怎么用?PHP Action::EventShutdown使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Action
的用法示例。
在下文中一共展示了Action::EventShutdown方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: ExecAction
/**
* Запускает на выполнение экшен
* Может запускаться рекурсивно если в одном экшене стоит переадресация на другой
*
*/
public function ExecAction()
{
$this->DefineActionClass();
/**
* Сначала запускаем инициализирующий евент
*/
$this->Hook_Run('init_action');
$sActionClass = $this->DefineActionClass();
/**
* Определяем наличие делегата экшена
*/
if ($aChain = $this->Plugin_GetDelegationChain('action', $sActionClass)) {
if (!empty($aChain)) {
$sActionClass = $aChain[0];
}
}
self::$sActionClass = $sActionClass;
/**
* Если класс экешна начинается с Plugin*_, значит необходимо загрузить объект из указанного плагина
*/
if (!preg_match('/^Plugin([\\w]+)_Action([\\w]+)$/i', $sActionClass, $aMatches)) {
require_once Config::Get('path.root.server') . '/classes/actions/' . $sActionClass . '.class.php';
} else {
require_once Config::Get('path.root.server') . '/plugins/' . strtolower($aMatches[1]) . '/classes/actions/Action' . ucfirst($aMatches[2]) . '.class.php';
}
$sClassName = $sActionClass;
$this->oAction = new $sClassName($this->oEngine, self::$sAction);
/**
* Инициализируем экшен
*/
$this->Hook_Run("action_init_" . strtolower($sActionClass) . "_before");
$sInitResult = $this->oAction->Init();
$this->Hook_Run("action_init_" . strtolower($sActionClass) . "_after");
if ($sInitResult === 'next') {
$this->ExecAction();
} else {
/**
* Замеряем время работы action`а
*/
$oProfiler = ProfilerSimple::getInstance();
$iTimeId = $oProfiler->Start('ExecAction', self::$sAction);
$res = $this->oAction->ExecEvent();
self::$sActionEventName = $this->oAction->GetCurrentEventName();
$this->Hook_Run("action_shutdown_" . strtolower($sActionClass) . "_before");
$this->oAction->EventShutdown();
$this->Hook_Run("action_shutdown_" . strtolower($sActionClass) . "_after");
$oProfiler->Stop($iTimeId);
if ($res === 'next') {
$this->ExecAction();
}
}
}
示例2: ExecAction
/**
* Запускает на выполнение экшен
* Может запускаться рекурсивно если в одном экшене стоит переадресация на другой
*
*/
public function ExecAction()
{
$this->DefineActionClass();
/**
* Сначала запускаем инициализирующий евент
*/
$this->Hook_Run('init_action');
$sActionClass = $this->DefineActionClass();
/**
* Определяем наличие делегата экшена
*/
if ($aChain = $this->Plugin_GetDelegationChain('action', $sActionClass)) {
if (!empty($aChain)) {
$sActionClass = $aChain[0];
}
}
self::$sActionClass = $sActionClass;
$sClassName = $sActionClass;
$this->oAction = new $sClassName(self::$sAction);
/**
* Инициализируем экшен
*/
$this->Hook_Run("action_init_" . strtolower($sActionClass) . "_before");
$sInitResult = $this->oAction->Init();
$this->Hook_Run("action_init_" . strtolower($sActionClass) . "_after");
if ($sInitResult === 'next') {
$this->ExecAction();
} else {
$mRes = $this->oAction->ExecEvent();
self::$sActionEventName = $this->oAction->GetCurrentEventName();
$this->Hook_Run("action_shutdown_" . strtolower($sActionClass) . "_before");
$this->oAction->EventShutdown();
$this->Hook_Run("action_shutdown_" . strtolower($sActionClass) . "_after");
if ($mRes === 'next') {
$this->ExecAction();
}
}
}
示例3: ExecAction
/**
* Запускает на выполнение экшен
* Может запускаться рекурсивно если в одном экшене стоит переадресация на другой
*
*/
public function ExecAction()
{
$this->DefineActionClass();
// Hook before action
E::ModuleHook()->Run('action_before');
$sActionClass = $this->DefineActionClass();
// * Определяем наличие делегата экшена
if ($aChain = E::ModulePlugin()->GetDelegationChain('action', $sActionClass)) {
if (!empty($aChain)) {
$sActionClass = $aChain[0];
}
}
static::$sActionClass = $sActionClass;
if (!class_exists($sActionClass)) {
throw new Exception('Cannot load class "' . $sActionClass . '"');
}
$this->oAction = new $sActionClass(static::$sAction);
// * Инициализируем экшен
$sInitResult = $this->oAction->Init();
if ($sInitResult === 'next') {
$this->ExecAction();
} else {
// Если инициализация экшена прошла успешно и метод провеки доступа вернул
// положительный результат то запускаем запрошенный ивент на исполнение.
if ($sInitResult !== false && $this->oAction->Access(self::GetActionEvent()) !== false) {
$res = $this->oAction->ExecEvent();
static::$sActionEventName = $this->oAction->GetCurrentEventName();
$this->oAction->EventShutdown();
if ($res === 'next') {
$this->ExecAction();
}
} else {
if (!F::AjaxRequest()) {
static::$sAction = $this->aConfigRoute['config']['action_not_found'];
static::$sActionEvent = '404';
$this->ExecAction();
}
}
}
// Hook after action
E::ModuleHook()->Run('action_after');
}
示例4: ExecAction
/**
* Запускает на выполнение экшен
* Может запускаться рекурсивно если в одном экшене стоит переадресация на другой
*
*/
public function ExecAction()
{
$this->DefineActionClass();
// Hook before action
E::ModuleHook()->Run('action_before');
$sActionClass = $this->DefineActionClass();
// * Определяем наличие делегата экшена
if ($aChain = E::ModulePlugin()->GetDelegationChain('action', $sActionClass)) {
if (!empty($aChain)) {
$sActionClass = $aChain[0];
}
}
static::$sActionClass = $sActionClass;
if (!class_exists($sActionClass)) {
throw new Exception('Cannot load class "' . $sActionClass . '"');
}
$this->oAction = new $sActionClass(static::$sAction);
// * Инициализируем экшен
$sInitResult = $this->oAction->Init();
if ($sInitResult === 'next') {
$this->ExecAction();
} else {
// Если инициализация экшена прошла успешно,
// то запускаем запрошенный ивент на исполнение.
if ($sInitResult !== false) {
$xEventResult = $this->oAction->ExecEvent();
static::$sActionEventName = $this->oAction->GetCurrentEventName();
$this->oAction->EventShutdown();
if ($xEventResult === 'next') {
$this->ExecAction();
}
}
}
// Hook after action
E::ModuleHook()->Run('action_after');
}