✏️ 正在编辑: HookRegistry.php
路径:
/home/bpioifn/www/pigmentse/src/PrestaShopBundle/DataCollector/HookRegistry.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php /** * 2007-2019 PrestaShop and Contributors * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * https://opensource.org/licenses/OSL-3.0 * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to https://www.prestashop.com for more information. * * @author PrestaShop SA <contact@prestashop.com> * @copyright 2007-2019 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ namespace PrestaShopBundle\DataCollector; use PrestaShop\PrestaShop\Core\Module\ModuleInterface; /** * Collect all hooks information dispatched during a request. */ final class HookRegistry { const HOOK_NOT_CALLED = 'notCalled'; const HOOK_CALLED = 'called'; /** * @var array the current selected hook during the request */ private $currentHook = null; /** * @var array the list of hooks data */ private $hooks; public function __construct() { $this->hooks = array( self::HOOK_CALLED => array(), self::HOOK_NOT_CALLED => array(), ); } /** * @param $hookName string * @param $hookArguments array * @param $file string filepath where the "Hook::exec" call have been done * @param $line string position in file where the "Hook::exec" call have been done */ public function selectHook($hookName, $hookArguments, $file, $line) { $this->currentHook = array( 'name' => $hookName, 'args' => $hookArguments, 'location' => "$file:$line", 'status' => self::HOOK_NOT_CALLED, 'modules' => array(), ); } /** * Notify the registry that the selected hook have been called. */ public function hookWasCalled() { $this->currentHook['status'] = self::HOOK_CALLED; } /** * @param ModuleInterface $module */ public function hookedByModule(ModuleInterface $module) { $this->currentHook['modules'][$module->name] = array( 'callback' => array(), 'widget' => array(), ); } /** * A callback have been executed by the module during the Hook dispatch. * * @param ModuleInterface $module * @param $args array All arguments passed to the Module callback */ public function hookedByCallback(ModuleInterface $module, $args) { $this->currentHook['modules'][$module->name]['callback'] = array( 'args' => $args, ); } /** * A widget have been rendered by the module during the Hook dispatch. * * @param ModuleInterface $module * @param $args array All arguments passed to the Module callback */ public function hookedByWidget(ModuleInterface $module, $args) { $this->currentHook['modules'][$module->name]['widget'] = array( 'args' => $args, ); } /** * @return array the list of called hooks */ public function getCalledHooks() { return $this->hooks['called']; } /** * @return array the list of uncalled hooks */ public function getNotCalledHooks() { return $this->hooks['notCalled']; } /** * @return array the list of dispatched hooks */ public function getHooks() { return $this->hooks['called'] + $this->hooks['notCalled']; } /** * Persist the selected hook into the list. * * Theses hooks will be used by the HookDataCollector */ public function collect() { $name = $this->currentHook['name']; $status = $this->currentHook['status']; $hook = array( 'args' => $this->currentHook['args'], 'name' => $name, 'location' => $this->currentHook['location'], 'modules' => $this->currentHook['modules'], ); $this->hooks[$status][$name][] = $hook; } }
💾 保存文件
← 返回文件管理器