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

Client.php

Zuletzt modifiziert: 09.10.2024, 12:54 - Dateigröße: 6.85 KiB


 001  <?php
 002   
 003  /*
 004   * This file is part of the Symfony package.
 005   *
 006   * (c) Fabien Potencier <fabien@symfony.com>
 007   *
 008   * For the full copyright and license information, please view the LICENSE
 009   * file that was distributed with this source code.
 010   */
 011   
 012  namespace Symfony\Component\HttpKernel;
 013   
 014  use Symfony\Component\BrowserKit\Client as BaseClient;
 015  use Symfony\Component\BrowserKit\Request as DomRequest;
 016  use Symfony\Component\BrowserKit\Response as DomResponse;
 017  use Symfony\Component\BrowserKit\Cookie as DomCookie;
 018  use Symfony\Component\BrowserKit\History;
 019  use Symfony\Component\BrowserKit\CookieJar;
 020  use Symfony\Component\HttpFoundation\File\UploadedFile;
 021  use Symfony\Component\HttpFoundation\Request;
 022  use Symfony\Component\HttpFoundation\Response;
 023   
 024  /**
 025   * Client simulates a browser and makes requests to a Kernel object.
 026   *
 027   * @author Fabien Potencier <fabien@symfony.com>
 028   */
 029  class Client extends BaseClient
 030  {
 031      protected $kernel;
 032   
 033      /**
 034       * Constructor.
 035       *
 036       * @param HttpKernelInterface $kernel    An HttpKernel instance
 037       * @param array               $server    The server parameters (equivalent of $_SERVER)
 038       * @param History             $history   A History instance to store the browser history
 039       * @param CookieJar           $cookieJar A CookieJar instance to store the cookies
 040       */
 041      public function __construct(HttpKernelInterface $kernel, array $server = array(), History $history = null, CookieJar $cookieJar = null)
 042      {
 043          // These class properties must be set before calling the parent constructor, as it may depend on it.
 044          $this->kernel = $kernel;
 045          $this->followRedirects = false;
 046   
 047          parent::__construct($server, $history, $cookieJar);
 048      }
 049   
 050      /**
 051       * {@inheritdoc}
 052       *
 053       * @return Request|null A Request instance
 054       */
 055      public function getRequest()
 056      {
 057          return parent::getRequest();
 058      }
 059   
 060      /**
 061       * {@inheritdoc}
 062       *
 063       * @return Response|null A Response instance
 064       */
 065      public function getResponse()
 066      {
 067          return parent::getResponse();
 068      }
 069   
 070      /**
 071       * Makes a request.
 072       *
 073       * @param Request $request A Request instance
 074       *
 075       * @return Response A Response instance
 076       */
 077      protected function doRequest($request)
 078      {
 079          $response = $this->kernel->handle($request);
 080   
 081          if ($this->kernel instanceof TerminableInterface) {
 082              $this->kernel->terminate($request, $response);
 083          }
 084   
 085          return $response;
 086      }
 087   
 088      /**
 089       * Returns the script to execute when the request must be insulated.
 090       *
 091       * @param Request $request A Request instance
 092       *
 093       * @return string
 094       */
 095      protected function getScript($request)
 096      {
 097          $kernel = str_replace("'", "\\'", serialize($this->kernel));
 098          $request = str_replace("'", "\\'", serialize($request));
 099   
 100          $r = new \ReflectionClass('\\Symfony\\Component\\ClassLoader\\ClassLoader');
 101          $requirePath = str_replace("'", "\\'", $r->getFileName());
 102          $symfonyPath = str_replace("'", "\\'", dirname(dirname(dirname(__DIR__))));
 103          $errorReporting = error_reporting();
 104   
 105          $code = <<<EOF
 106  <?php
 107   
 108  error_reporting($errorReporting);
 109   
 110  require_once '$requirePath';
 111   
 112  \$loader = new Symfony\Component\ClassLoader\ClassLoader();
 113  \$loader->addPrefix('Symfony', '$symfonyPath');
 114  \$loader->register();
 115   
 116  \$kernel = unserialize('$kernel');
 117  \$request = unserialize('$request');
 118  EOF;
 119   
 120   
 121          return $code.$this->getHandleScript();
 122      }
 123   
 124      protected function getHandleScript()
 125      {
 126          return <<<'EOF'
 127  $response = $kernel->handle($request);
 128   
 129  if ($kernel instanceof Symfony\Component\HttpKernel\TerminableInterface) {
 130      $kernel->terminate($request, $response);
 131  }
 132   
 133  echo serialize($response);
 134  EOF;
 135   
 136      }
 137   
 138      /**
 139       * Converts the BrowserKit request to a HttpKernel request.
 140       *
 141       * @param DomRequest $request A DomRequest instance
 142       *
 143       * @return Request A Request instance
 144       */
 145      protected function filterRequest(DomRequest $request)
 146      {
 147          $httpRequest = Request::create($request->getUri(), $request->getMethod(), $request->getParameters(), $request->getCookies(), $request->getFiles(), $request->getServer(), $request->getContent());
 148   
 149          foreach ($this->filterFiles($httpRequest->files->all()) as $key => $value) {
 150              $httpRequest->files->set($key, $value);
 151          }
 152   
 153          return $httpRequest;
 154      }
 155   
 156      /**
 157       * Filters an array of files.
 158       *
 159       * This method created test instances of UploadedFile so that the move()
 160       * method can be called on those instances.
 161       *
 162       * If the size of a file is greater than the allowed size (from php.ini) then
 163       * an invalid UploadedFile is returned with an error set to UPLOAD_ERR_INI_SIZE.
 164       *
 165       * @see UploadedFile
 166       *
 167       * @param array $files An array of files
 168       *
 169       * @return array An array with all uploaded files marked as already moved
 170       */
 171      protected function filterFiles(array $files)
 172      {
 173          $filtered = array();
 174          foreach ($files as $key => $value) {
 175              if (is_array($value)) {
 176                  $filtered[$key] = $this->filterFiles($value);
 177              } elseif ($value instanceof UploadedFile) {
 178                  if ($value->isValid() && $value->getSize() > UploadedFile::getMaxFilesize()) {
 179                      $filtered[$key] = new UploadedFile(
 180                          '',
 181                          $value->getClientOriginalName(),
 182                          $value->getClientMimeType(),
 183                          0,
 184                          UPLOAD_ERR_INI_SIZE,
 185                          true
 186                      );
 187                  } else {
 188                      $filtered[$key] = new UploadedFile(
 189                          $value->getPathname(),
 190                          $value->getClientOriginalName(),
 191                          $value->getClientMimeType(),
 192                          $value->getClientSize(),
 193                          $value->getError(),
 194                          true
 195                      );
 196                  }
 197              }
 198          }
 199   
 200          return $filtered;
 201      }
 202   
 203      /**
 204       * Converts the HttpKernel response to a BrowserKit response.
 205       *
 206       * @param Response $response A Response instance
 207       *
 208       * @return DomResponse A DomResponse instance
 209       */
 210      protected function filterResponse($response)
 211      {
 212          $headers = $response->headers->all();
 213          if ($response->headers->getCookies()) {
 214              $cookies = array();
 215              foreach ($response->headers->getCookies() as $cookie) {
 216                  $cookies[] = new DomCookie($cookie->getName(), $cookie->getValue(), $cookie->getExpiresTime(), $cookie->getPath(), $cookie->getDomain(), $cookie->isSecure(), $cookie->isHttpOnly());
 217              }
 218              $headers['Set-Cookie'] = $cookies;
 219          }
 220   
 221          // this is needed to support StreamedResponse
 222          ob_start();
 223          $response->sendContent();
 224          $content = ob_get_clean();
 225   
 226          return new DomResponse($content, $response->getStatusCode(), $headers);
 227      }
 228  }
 229