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. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
History.php
001 <?php
002 namespace GuzzleHttp\Subscriber;
003
004 use GuzzleHttp\Event\CompleteEvent;
005 use GuzzleHttp\Event\ErrorEvent;
006 use GuzzleHttp\Event\RequestEvents;
007 use GuzzleHttp\Event\SubscriberInterface;
008 use GuzzleHttp\Message\RequestInterface;
009 use GuzzleHttp\Message\ResponseInterface;
010
011 /**
012 * Maintains a list of requests and responses sent using a request or client
013 */
014 class History implements SubscriberInterface, \IteratorAggregate, \Countable
015 {
016 /** @var int The maximum number of requests to maintain in the history */
017 private $limit;
018
019 /** @var array Requests and responses that have passed through the plugin */
020 private $transactions = [];
021
022 public function __construct($limit = 10)
023 {
024 $this->limit = $limit;
025 }
026
027 public function getEvents()
028 {
029 return [
030 'complete' => ['onComplete', RequestEvents::EARLY],
031 'error' => ['onError', RequestEvents::EARLY],
032 ];
033 }
034
035 /**
036 * Convert to a string that contains all request and response headers
037 *
038 * @return string
039 */
040 public function __toString()
041 {
042 $lines = array();
043 foreach ($this->transactions as $entry) {
044 $response = isset($entry['response']) ? $entry['response'] : '';
045 $lines[] = '> ' . trim($entry['sent_request'])
046 . "\n\n< " . trim($response) . "\n";
047 }
048
049 return implode("\n", $lines);
050 }
051
052 public function onComplete(CompleteEvent $event)
053 {
054 $this->add($event->getRequest(), $event->getResponse());
055 }
056
057 public function onError(ErrorEvent $event)
058 {
059 // Only track when no response is present, meaning this didn't ever
060 // emit a complete event
061 if (!$event->getResponse()) {
062 $this->add($event->getRequest());
063 }
064 }
065
066 /**
067 * Returns an Iterator that yields associative array values where each
068 * associative array contains the following key value pairs:
069 *
070 * - request: Representing the actual request that was received.
071 * - sent_request: A clone of the request that will not be mutated.
072 * - response: The response that was received (if available).
073 *
074 * @return \Iterator
075 */
076 public function getIterator()
077 {
078 return new \ArrayIterator($this->transactions);
079 }
080
081 /**
082 * Get all of the requests sent through the plugin.
083 *
084 * Requests can be modified after they are logged by the history
085 * subscriber. By default this method will return the actual request
086 * instances that were received. Pass true to this method if you wish to
087 * get copies of the requests that represent the request state when it was
088 * initially logged by the history subscriber.
089 *
090 * @param bool $asSent Set to true to get clones of the requests that have
091 * not been mutated since the request was received by
092 * the history subscriber.
093 *
094 * @return RequestInterface[]
095 */
096 public function getRequests($asSent = false)
097 {
098 return array_map(function ($t) use ($asSent) {
099 return $asSent ? $t['sent_request'] : $t['request'];
100 }, $this->transactions);
101 }
102
103 /**
104 * Get the number of requests in the history
105 *
106 * @return int
107 */
108 public function count()
109 {
110 return count($this->transactions);
111 }
112
113 /**
114 * Get the last request sent.
115 *
116 * Requests can be modified after they are logged by the history
117 * subscriber. By default this method will return the actual request
118 * instance that was received. Pass true to this method if you wish to get
119 * a copy of the request that represents the request state when it was
120 * initially logged by the history subscriber.
121 *
122 * @param bool $asSent Set to true to get a clone of the last request that
123 * has not been mutated since the request was received
124 * by the history subscriber.
125 *
126 * @return RequestInterface
127 */
128 public function getLastRequest($asSent = false)
129 {
130 return $asSent
131 ? end($this->transactions)['sent_request']
132 : end($this->transactions)['request'];
133 }
134
135 /**
136 * Get the last response in the history
137 *
138 * @return ResponseInterface|null
139 */
140 public function getLastResponse()
141 {
142 return end($this->transactions)['response'];
143 }
144
145 /**
146 * Clears the history
147 */
148 public function clear()
149 {
150 $this->transactions = array();
151 }
152
153 /**
154 * Add a request to the history
155 *
156 * @param RequestInterface $request Request to add
157 * @param ResponseInterface $response Response of the request
158 */
159 private function add(
160 RequestInterface $request,
161 ResponseInterface $response = null
162 ) {
163 $this->transactions[] = [
164 'request' => $request,
165 'sent_request' => clone $request,
166 'response' => $response
167 ];
168 if (count($this->transactions) > $this->limit) {
169 array_shift($this->transactions);
170 }
171 }
172 }
173