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

ServiceReferenceGraph.php

Zuletzt modifiziert: 09.10.2024, 12:58 - Dateigröße: 2.89 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\DependencyInjection\Compiler;
 013   
 014  use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
 015   
 016  /**
 017   * This is a directed graph of your services.
 018   *
 019   * This information can be used by your compiler passes instead of collecting
 020   * it themselves which improves performance quite a lot.
 021   *
 022   * @author Johannes M. Schmitt <schmittjoh@gmail.com>
 023   */
 024  class ServiceReferenceGraph
 025  {
 026      /**
 027       * @var ServiceReferenceGraphNode[]
 028       */
 029      private $nodes;
 030   
 031      /**
 032       * Constructor.
 033       */
 034      public function __construct()
 035      {
 036          $this->nodes = array();
 037      }
 038   
 039      /**
 040       * Checks if the graph has a specific node.
 041       *
 042       * @param string $id Id to check
 043       *
 044       * @return bool
 045       */
 046      public function hasNode($id)
 047      {
 048          return isset($this->nodes[$id]);
 049      }
 050   
 051      /**
 052       * Gets a node by identifier.
 053       *
 054       * @param string $id The id to retrieve
 055       *
 056       * @return ServiceReferenceGraphNode The node matching the supplied identifier
 057       *
 058       * @throws InvalidArgumentException if no node matches the supplied identifier
 059       */
 060      public function getNode($id)
 061      {
 062          if (!isset($this->nodes[$id])) {
 063              throw new InvalidArgumentException(sprintf('There is no node with id "%s".', $id));
 064          }
 065   
 066          return $this->nodes[$id];
 067      }
 068   
 069      /**
 070       * Returns all nodes.
 071       *
 072       * @return ServiceReferenceGraphNode[] An array of all ServiceReferenceGraphNode objects
 073       */
 074      public function getNodes()
 075      {
 076          return $this->nodes;
 077      }
 078   
 079      /**
 080       * Clears all nodes.
 081       */
 082      public function clear()
 083      {
 084          $this->nodes = array();
 085      }
 086   
 087      /**
 088       * Connects 2 nodes together in the Graph.
 089       *
 090       * @param string $sourceId
 091       * @param string $sourceValue
 092       * @param string $destId
 093       * @param string $destValue
 094       * @param string $reference
 095       */
 096      public function connect($sourceId, $sourceValue, $destId, $destValue = null, $reference = null)
 097      {
 098          $sourceNode = $this->createNode($sourceId, $sourceValue);
 099          $destNode = $this->createNode($destId, $destValue);
 100          $edge = new ServiceReferenceGraphEdge($sourceNode, $destNode, $reference);
 101   
 102          $sourceNode->addOutEdge($edge);
 103          $destNode->addInEdge($edge);
 104      }
 105   
 106      /**
 107       * Creates a graph node.
 108       *
 109       * @param string $id
 110       * @param string $value
 111       *
 112       * @return ServiceReferenceGraphNode
 113       */
 114      private function createNode($id, $value)
 115      {
 116          if (isset($this->nodes[$id]) && $this->nodes[$id]->getValue() === $value) {
 117              return $this->nodes[$id];
 118          }
 119   
 120          return $this->nodes[$id] = new ServiceReferenceGraphNode($id, $value);
 121      }
 122  }
 123