[ Index ]

PHP Cross Reference of Akelos Framework

title

Body

[close]

/AkReflection/ -> AkReflectionFile.php (source)

   1  <?php
   2  require_once (AK_LIB_DIR.DS.'AkReflection.php');
   3  require_once (AK_LIB_DIR.DS.'AkReflection'.DS.'AkReflectionClass.php');
   4  
   5  class AkReflectionFile extends AkReflection
   6  {
   7      var $filename;
   8      var $classes=array();
   9      var $functions=array();
  10      var $interfaces=array();
  11      var $requires=array();
  12      var $includes=array();
  13      function AkReflectionFile($file_name)
  14      {
  15          $this->filename = $file_name;
  16          if (file_exists($file_name)) {
  17              $this->_parse(file_get_contents($file_name));
  18          } else {
  19              
  20          }
  21          $this->_parseDefinitions();
  22      }
  23      
  24      function _parseDefinitions()
  25      {
  26          foreach($this->definitions as $key=>$definition) {
  27              if (isset($definition['type'])) {
  28                  switch ($definition['type']) {
  29                      case 'class':
  30                          $this->classes[] = new AkReflectionClass($definition);
  31                          break;
  32                  }
  33              } else {
  34                  switch ($key) {
  35                      case 'require_once':
  36                      case 'require':
  37                          $this->requires = array_merge($this->requires,$definition);
  38                          break;
  39                      case 'include_once':
  40                      case 'include':
  41                          $this->includes = array_merge($this->includes,$definition);
  42                          break;
  43                  }
  44              }
  45          }
  46      }
  47      function getClasses($options = null)
  48      {
  49          
  50          if ($options == null) {
  51              return $this->classes;
  52          } else if (is_array($options)) {
  53              $default_options = array();
  54              $available_options = array('visibility','tags');
  55              $parameters = array('available_options'=>$available_options);
  56              Ak::parseOptions(&$options,$default_options,$parameters);
  57              $returnClasses = array();
  58              foreach ($this->classes as $class) {
  59                  if (isset($options['visibility']) && $class->getVisibility()!=$options['visibility']) {
  60                      continue;
  61                  }
  62                  if (isset($options['tags'])) {
  63                      $options['tags']=!is_array($options['tags'])?array($options['tags']):$options['tags'];
  64                      $docBlock = $method->getDocBlock();
  65                      foreach($options['tags'] as $tag) {
  66                          if ($docBlock->getTag($tag)==false) continue;
  67                      }
  68                  }
  69                  $returnClasses[] = $class;
  70                  
  71              }
  72              return $returnClasses;
  73          }
  74      }
  75      
  76      function getFunctions()
  77      {
  78          return $this->functions;
  79      }
  80      function getInterfaces()
  81      {
  82          return $this->interfaces;
  83      }
  84      
  85      function getIncludes()
  86      {
  87          return $this->includes;
  88      }
  89      
  90      function getRequires()
  91      {
  92          return $this->requires;
  93      }
  94  }
  95  ?>


Generated: Mon Oct 27 12:43:49 2008 Cross-referenced by PHPXref 0.6