Verzeichnisstruktur phpBB-3.1.0


Veröffentlicht
27.10.2014

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

Bundle.php

Zuletzt modifiziert: 09.10.2024, 12:58 - Dateigröße: 5.13 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\Bundle;
013   
014  use Symfony\Component\DependencyInjection\ContainerAware;
015  use Symfony\Component\DependencyInjection\ContainerBuilder;
016  use Symfony\Component\DependencyInjection\Container;
017  use Symfony\Component\Console\Application;
018  use Symfony\Component\Finder\Finder;
019  use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
020   
021  /**
022   * An implementation of BundleInterface that adds a few conventions
023   * for DependencyInjection extensions and Console commands.
024   *
025   * @author Fabien Potencier <fabien@symfony.com>
026   *
027   * @api
028   */
029  abstract class Bundle extends ContainerAware implements BundleInterface
030  {
031      protected $name;
032      protected $reflected;
033      protected $extension;
034   
035      /**
036       * Boots the Bundle.
037       */
038      public function boot()
039      {
040      }
041   
042      /**
043       * Shutdowns the Bundle.
044       */
045      public function shutdown()
046      {
047      }
048   
049      /**
050       * Builds the bundle.
051       *
052       * It is only ever called once when the cache is empty.
053       *
054       * This method can be overridden to register compilation passes,
055       * other extensions, ...
056       *
057       * @param ContainerBuilder $container A ContainerBuilder instance
058       */
059      public function build(ContainerBuilder $container)
060      {
061      }
062   
063      /**
064       * Returns the bundle's container extension.
065       *
066       * @return ExtensionInterface|null The container extension
067       *
068       * @throws \LogicException
069       *
070       * @api
071       */
072      public function getContainerExtension()
073      {
074          if (null === $this->extension) {
075              $basename = preg_replace('/Bundle$/', '', $this->getName());
076   
077              $class = $this->getNamespace().'\\DependencyInjection\\'.$basename.'Extension';
078              if (class_exists($class)) {
079                  $extension = new $class();
080   
081                  // check naming convention
082                  $expectedAlias = Container::underscore($basename);
083                  if ($expectedAlias != $extension->getAlias()) {
084                      throw new \LogicException(sprintf(
085                          'The extension alias for the default extension of a '.
086                          'bundle must be the underscored version of the '.
087                          'bundle name ("%s" instead of "%s")',
088                          $expectedAlias, $extension->getAlias()
089                      ));
090                  }
091   
092                  $this->extension = $extension;
093              } else {
094                  $this->extension = false;
095              }
096          }
097   
098          if ($this->extension) {
099              return $this->extension;
100          }
101      }
102   
103      /**
104       * Gets the Bundle namespace.
105       *
106       * @return string The Bundle namespace
107       *
108       * @api
109       */
110      public function getNamespace()
111      {
112          if (null === $this->reflected) {
113              $this->reflected = new \ReflectionObject($this);
114          }
115   
116          return $this->reflected->getNamespaceName();
117      }
118   
119      /**
120       * Gets the Bundle directory path.
121       *
122       * @return string The Bundle absolute path
123       *
124       * @api
125       */
126      public function getPath()
127      {
128          if (null === $this->reflected) {
129              $this->reflected = new \ReflectionObject($this);
130          }
131   
132          return dirname($this->reflected->getFileName());
133      }
134   
135      /**
136       * Returns the bundle parent name.
137       *
138       * @return string The Bundle parent name it overrides or null if no parent
139       *
140       * @api
141       */
142      public function getParent()
143      {
144      }
145   
146      /**
147       * Returns the bundle name (the class short name).
148       *
149       * @return string The Bundle name
150       *
151       * @api
152       */
153      final public function getName()
154      {
155          if (null !== $this->name) {
156              return $this->name;
157          }
158   
159          $name = get_class($this);
160          $pos = strrpos($name, '\\');
161   
162          return $this->name = false === $pos ? $name : substr($name, $pos + 1);
163      }
164   
165      /**
166       * Finds and registers Commands.
167       *
168       * Override this method if your bundle commands do not follow the conventions:
169       *
170       * * Commands are in the 'Command' sub-directory
171       * * Commands extend Symfony\Component\Console\Command\Command
172       *
173       * @param Application $application An Application instance
174       */
175      public function registerCommands(Application $application)
176      {
177          if (!is_dir($dir = $this->getPath().'/Command')) {
178              return;
179          }
180   
181          $finder = new Finder();
182          $finder->files()->name('*Command.php')->in($dir);
183   
184          $prefix = $this->getNamespace().'\\Command';
185          foreach ($finder as $file) {
186              $ns = $prefix;
187              if ($relativePath = $file->getRelativePath()) {
188                  $ns .= '\\'.strtr($relativePath, '/', '\\');
189              }
190              $r = new \ReflectionClass($ns.'\\'.$file->getBasename('.php'));
191              if ($r->isSubclassOf('Symfony\\Component\\Console\\Command\\Command') && !$r->isAbstract() && !$r->getConstructor()->getNumberOfRequiredParameters()) {
192                  $application->add($r->newInstance());
193              }
194          }
195      }
196  }
197