コード例 #1
0
ファイル: Vonnegut.php プロジェクト: pete-otaqui/vonnegut
 /**
  * Reflects on a given file, parsing out classes and methods
  * for serialization.
  * 
  * @param string $path the path of a file to reflect.
  * @return object the serialized documentation object.
  */
 public function reflectFile($path)
 {
     // adding ./ to the beginning of relative paths fixes an issue including php files
     if (!preg_match('/^(?:[a-zA-Z]:\\|\\/)/', $path)) {
         $path = '.' . DIRECTORY_SEPARATOR . $path;
     }
     require_once $path;
     $filename = $filename = preg_replace("|^.*[\\\\/]|", $path, '');
     $serial = new StdClass();
     $serial->constants = array();
     $serial->variables = array();
     $serial->namespaces = array();
     $serial->classes = array();
     $serial->interfaces = array();
     $serial->functions = array();
     $file_reflector = new Zend_Reflection_File($path);
     $serial->tags = array();
     try {
         $db = $file_reflector->getDocBlock();
         $tags = $db->getTags();
         foreach ($tags as $tag) {
             $tagSerial = new StdClass();
             $tagSerial->name = $tag->getName();
             $tagSerial->description = $tag->getDescription();
             $serial->tags[] = $tagSerial;
         }
     } catch (Zend_Reflection_Exception $e) {
         $db = false;
     }
     $classes = $file_reflector->getClasses();
     foreach ($classes as $class) {
         $classSerial = $this->reflectClass($class);
         $isInterface = $classSerial->interface;
         unset($classSerial->interface);
         if ($isInterface == false) {
             $serial->classes[$classSerial->name] = $classSerial;
         } else {
             $serial->interfaces[$classSerial->name] = $classSerial;
         }
         unset($classSerial->name);
     }
     $functions = $file_reflector->getFunctions();
     foreach ($functions as $function) {
         $functionSerial = $this->reflectMethod($function);
         $serial->functions[$function->name] = $functionSerial;
     }
     $serial->meta = $this->_getMeta();
     $serial->meta->path = $path;
     return $serial;
 }
コード例 #2
0
ファイル: Vonnegut.php プロジェクト: bbc-frameworks/vonnegut
 /**
  * Reflects on a given file parsing out classes and methods
  * for serialization.
  *
  * @param string $path the path of a file to reflect.
  * @return object the serialized documentation object.
  */
 public function reflectFile($path)
 {
     // adding ./ to the beginning of relative paths fixes an issue including php files
     if ($path[0] !== "/" && !preg_match('/^(?:[a-zA-Z]:\\|\\/)/', $path)) {
         $path = '.' . DIRECTORY_SEPARATOR . $path;
     }
     // don't require if the file has already been autoloaded.
     if (!in_array($path, get_included_files())) {
         require_once $path;
     }
     $filename = preg_replace("|^.*[\\\\/]|", $path, '');
     $serial = new Vonnegut_Namespace();
     $file_reflector = new Zend_Reflection_File($path);
     $serial->tags = array();
     try {
         $db = $file_reflector->getDocBlock();
         $tags = $db->getTags();
         foreach ($tags as $tag) {
             $tagSerial = new StdClass();
             $tagSerial->name = $tag->getName();
             $tagSerial->description = $tag->getDescription();
             $serial->tags[] = $tagSerial;
         }
     } catch (Zend_Reflection_Exception $e) {
         $db = false;
     }
     $classes = $file_reflector->getClasses();
     foreach ($classes as $class) {
         $classSerial = $this->reflectClass($class);
         $serial->classes->{$classSerial->name} = $classSerial;
     }
     /*
     $functions  = $file_reflector->getFunctions();
     foreach ( $functions as $function ) {
         $functionSerial = $this->reflectMethod($function);
         $serial->functions[$function->name] = $functionSerial;
     }
     */
     $serial->meta = $this->_getMeta();
     $serial->meta->path = $path;
     return $serial;
 }