diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index bca0573..6d3b9d7 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -18,4 +18,8 @@ * Fixed phpunit config ## v1.3.0 (2017-07-12) -* Added implement PSR-7: HTTP Message Interfaces \ No newline at end of file +* Added implement PSR-7: HTTP Message Interfaces + +## v1.3.2 (2017-07-17) +* Removed RequestListener +* Modify ListenerRegisterService Logic \ No newline at end of file diff --git a/src/Framework/Kernel.php b/src/Framework/Kernel.php index df0deb8..2aa4b40 100644 --- a/src/Framework/Kernel.php +++ b/src/Framework/Kernel.php @@ -97,7 +97,7 @@ class Kernel extends Container public function __construct(array $values = []) { $start = microtime(true); - $this['version'] = 'v1.1.0'; + $this['version'] = 'v1.3.2'; $this['start_time'] = $start; self::$instance = $this; parent::__construct($values); diff --git a/src/Framework/Listener/RequestListener.php b/src/Framework/Listener/RequestListener.php deleted file mode 100644 index 3cd4ebf..0000000 --- a/src/Framework/Listener/RequestListener.php +++ /dev/null @@ -1,13 +0,0 @@ -registerKernelListeners($app); $listeners = $this->parseListenerConfig(); + foreach ($listeners as $listener) { + if (empty($listener['listener']) || empty($listener['callback']) || empty($listener['event'])) { + throw new \InvalidArgumentException("property is not defined in listener config."); + } + if (!class_exists($listener['listener'])) { throw new \Exception("Class " . $listener['listener'] . " not found !"); } + if (!is_callable([$listener['listener'], $listener['callback']])) { + throw new \BadFunctionCallException('Function ' . $listener['callback'] . ' is not callable'); + } + + if (empty($listener['priority'])) { + $listener['priority'] = 0; + } $app['eventDispatcher']->addListener($listener['event'], [new $listener['listener'], $listener['callback']], $listener['priority']); } - } private function registerKernelListeners($app) { $listeners = \Kernel::getInstance()->getListeners(); - foreach ($listeners as $eventName => $listener) { list($listener, $callback) = explode('@', $listener); + if (!class_exists($listener)) { + continue; + } $app['eventDispatcher']->addListener($eventName, [new $listener(), $callback]); } } @@ -40,12 +53,17 @@ private function parseListenerConfig($listenerConfigAll = []) { $array = []; $listenersConfigs = \Config::parse('listeners'); + foreach ($listenersConfigs as $listenerConfig) { $resource = ($listenerConfig['resource']); + if (is_file(__BASEDIR__ . "/src/" . $resource) && file_exists(__BASEDIR__ . "/src/" . $resource)) { $array = \Yaml::parse(file_get_contents(__BASEDIR__ . "/src/" . $resource)); } - $listenerConfigAll = array_merge($listenerConfigAll, $array); + + if (is_array($array)) { + $listenerConfigAll = array_merge($listenerConfigAll, $array); + } } return $listenerConfigAll;