Verzeichnisstruktur phpBB-3.2.0


Veröffentlicht
06.01.2017

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

FilterChain.php

Zuletzt modifiziert: 09.10.2024, 12:55 - Dateigröße: 2.92 KiB


001  <?php
002  /**
003   * Zend Framework (http://framework.zend.com/)
004   *
005   * @link      http://github.com/zendframework/zf2 for the canonical source repository
006   * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
007   * @license   http://framework.zend.com/license/new-bsd New BSD License
008   */
009   
010  namespace Zend\EventManager;
011   
012  use Zend\Stdlib\CallbackHandler;
013   
014  /**
015   * FilterChain: intercepting filter manager
016   */
017  class FilterChain implements Filter\FilterInterface
018  {
019      /**
020       * @var Filter\FilterIterator All filters
021       */
022      protected $filters;
023   
024      /**
025       * Constructor
026       *
027       * Initializes Filter\FilterIterator in which filters will be aggregated
028       */
029      public function __construct()
030      {
031          $this->filters = new Filter\FilterIterator();
032      }
033   
034      /**
035       * Apply the filters
036       *
037       * Begins iteration of the filters.
038       *
039       * @param  mixed $context Object under observation
040       * @param  mixed $argv Associative array of arguments
041       * @return mixed
042       */
043      public function run($context, array $argv = array())
044      {
045          $chain = clone $this->getFilters();
046   
047          if ($chain->isEmpty()) {
048              return;
049          }
050   
051          $next = $chain->extract();
052          if (!$next instanceof CallbackHandler) {
053              return;
054          }
055   
056          return call_user_func($next->getCallback(), $context, $argv, $chain);
057      }
058   
059      /**
060       * Connect a filter to the chain
061       *
062       * @param  callable $callback PHP Callback
063       * @param  int $priority Priority in the queue at which to execute; defaults to 1 (higher numbers == higher priority)
064       * @return CallbackHandler (to allow later unsubscribe)
065       * @throws Exception\InvalidCallbackException
066       */
067      public function attach($callback, $priority = 1)
068      {
069          if (empty($callback)) {
070              throw new Exception\InvalidCallbackException('No callback provided');
071          }
072          $filter = new CallbackHandler($callback, array('priority' => $priority));
073          $this->filters->insert($filter, $priority);
074          return $filter;
075      }
076   
077      /**
078       * Detach a filter from the chain
079       *
080       * @param  CallbackHandler $filter
081       * @return bool Returns true if filter found and unsubscribed; returns false otherwise
082       */
083      public function detach(CallbackHandler $filter)
084      {
085          return $this->filters->remove($filter);
086      }
087   
088      /**
089       * Retrieve all filters
090       *
091       * @return Filter\FilterIterator
092       */
093      public function getFilters()
094      {
095          return $this->filters;
096      }
097   
098      /**
099       * Clear all filters
100       *
101       * @return void
102       */
103      public function clearFilters()
104      {
105          $this->filters = new Filter\FilterIterator();
106      }
107   
108      /**
109       * Return current responses
110       *
111       * Only available while the chain is still being iterated. Returns the
112       * current ResponseCollection.
113       *
114       * @return null|ResponseCollection
115       */
116      public function getResponses()
117      {
118          return;
119      }
120  }
121