| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 | 
							- <?php
 
- namespace OSInet\Class_Grapher;
 
- /**
 
-  * Representation of an "interface" symbol in source code.
 
-  */
 
- class InterfaceInstance {
 
-   const ORIGIN_UNKNOWN = NULL;
 
-   const ORIGIN_PHP = 'php';
 
-   const ORIGIN_EXTENSION = 'extension';
 
-   const ORIGIN_SCRIPT = 'script';
 
-   /**
 
-    * Was instance created just because it was referenced by another symbol ?
 
-    *
 
-    * @var int
 
-    *   0 (No) or 1 (Yes)
 
-    */
 
-   public $implicit;
 
-   /**
 
-    * Origin of symbol. Use the self::ORIGIN_* constants.
 
-    *
 
-    * @var int
 
-    */
 
-   public $origin;
 
-   /**
 
-    * @var Logger
 
-    */
 
-   public $logger = NULL;
 
-   public $name = '(none)';
 
-   public $parent = NULL;
 
-   /**
 
-    * @param \PGPClass $symbol
 
-    *   The interface symbole from grammar_parser.
 
-    * @param int $implicit
 
-    * @param Logger $logger
 
-    *
 
-    * @throws \Exception
 
-    */
 
-   public function __construct(\PGPClass $symbol, $implicit = 0, Logger $logger = NULL) {
 
-     $this->implicit = $implicit;
 
-     $this->logger = $logger;
 
-     $this->name = $symbol->name;
 
-     $this->parent = reset($symbol->extends);
 
-     if (empty($this->logger)) {
 
-       throw new \Exception('No logger in constructor.\n');
 
-     }
 
-     $this->origin = $this->getSymbolOrigin($symbol);
 
-   }
 
-   /**
 
-    * Shortcut for logger->message().
 
-    *
 
-    * @param string $message
 
-    * @param int $level
 
-    */
 
-   public function debug($message, $level = LOG_INFO) {
 
-     $this->logger->debug($message, $level);
 
-   }
 
-   public function getSymbolOrigin() {
 
-     $ret = self::ORIGIN_UNKNOWN;
 
-     try {
 
-       $r = new \ReflectionClass($this->name);
 
-       $this->debug("$this->name is introspectable.\n");
 
-     } catch (\ReflectionException $e) {
 
-       $this->debug("{$this->name} is userland, unshared with parser.\n");
 
-       $ret = self::ORIGIN_SCRIPT;
 
-     }
 
-     if (!isset($ret)) {
 
-       $extension = $r->getExtensionName();
 
-       if ($extension === FALSE) {
 
-         $ret = self::ORIGIN_SCRIPT;
 
-       }
 
-       else {
 
-         $this->implicit = 0;
 
-         $ret = ($extension == 'Core')
 
-           ? self::ORIGIN_PHP
 
-           : self::ORIGIN_EXTENSION . ':' . $extension;
 
-       }
 
-     }
 
-     return $ret;
 
-   }
 
-   public function basicAttributes() {
 
-     $ret = array(
 
-       'shape' => 'box',
 
-       'style' => 'rounded',
 
-     );
 
-     return $ret;
 
-   }
 
-   public function attributes() {
 
-     $ret = $this->basicAttributes();
 
-     if ($this->implicit) {
 
-       $ret['style'] = 'filled';
 
-       $ret['fillcolor'] = '#e0e0e0';
 
-     }
 
-     if ($this->origin != self::ORIGIN_SCRIPT) {
 
-       $ret['label'] = $this->name ."\n". $this->origin;
 
-     }
 
-     return $ret;
 
-   }
 
- }
 
 
  |