123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- <?php
- namespace Cube\Controller\Plugin;
- use Cube\Controller\Request\AbstractRequest,
- Cube\Controller\Response\AbstractResponse;
- class Broker extends AbstractPlugin
- {
-
- protected $_plugins = array();
-
- public function registerPlugin(AbstractPlugin $plugin)
- {
- if ($this->isRegisteredPlugin($plugin) === true) {
- throw new \OverflowException("The controller plugin is already registered");
- }
- else {
- $this->_plugins[get_class($plugin)] = $plugin;
- }
- return $this;
- }
-
- public function isRegisteredPlugin($plugin)
- {
- if ($plugin instanceof AbstractPlugin && array_search($plugin, $this->_plugins, true) !== false) {
- return true;
- }
- else if (is_string($plugin) && array_key_exists($plugin, $this->_plugins)) {
- return true;
- }
- return false;
- }
-
- public function setRequest(AbstractRequest $request)
- {
- $this->_request = $request;
- foreach ($this->_plugins as $plugin) {
- if ($plugin instanceof AbstractPlugin) {
- $plugin->setRequest($request);
- }
- }
- return $this;
- }
-
- public function setResponse(AbstractResponse $response)
- {
- $this->_response = $response;
- foreach ($this->_plugins as $plugin) {
- if ($plugin instanceof AbstractPlugin) {
- $plugin->setResponse($response);
- }
- }
- return $this;
- }
-
- public function preRoute()
- {
- foreach ($this->_plugins as $plugin) {
- if ($plugin instanceof AbstractPlugin) {
- $plugin->preRoute();
- }
- }
- }
-
- public function postRoute()
- {
- foreach ($this->_plugins as $plugin) {
- if ($plugin instanceof AbstractPlugin) {
- $plugin->postRoute();
- }
- }
- }
-
- public function preDispatcher()
- {
- foreach ($this->_plugins as $plugin) {
- if ($plugin instanceof AbstractPlugin) {
- $plugin->preDispatcher();
- }
- }
- }
-
- public function postDispatcher()
- {
- foreach ($this->_plugins as $plugin) {
- if ($plugin instanceof AbstractPlugin) {
- $plugin->postDispatcher();
- }
- }
- }
-
- public function preDispatch()
- {
- foreach ($this->_plugins as $plugin) {
- if ($plugin instanceof AbstractPlugin) {
- $plugin->preDispatch();
- }
- }
- }
-
- public function postDispatch()
- {
- foreach ($this->_plugins as $plugin) {
- if ($plugin instanceof AbstractPlugin) {
- $plugin->postDispatch();
- }
- }
- }
- }
|