theorx / reflectionist
该软件包的最新版本(dev-master)没有可用的许可证信息。
PHP 5.5 的类分析器
dev-master
2014-10-18 17:04 UTC
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2024-09-24 04:20:10 UTC
README
Reflectionist 是一个类分析库,使用这个库可以获取给定类的元信息,并使用它从 PHP 文档块注释(例如 @keyword)创建任何类型的自定义文档/自动化。同时提供有关类方法内部类型提示的信息。
这个库基于 Reflection 类,所以没有使用内部标记解析器。我们建议您使用缓存来配合这个类。目前,这个库不支持开箱即用的缓存。
#作者#
- Lauri Orgla
#要求#
Reflectionist 需要 PHP 5.5(其他版本尚未测试)和 Reflection 模块。
安装
$ git clone https://github.com/theorx/Reflectionist.git $ ./composer.phar update $ ./composer.phar dump-autoload -o
使用
require(__DIR__.'/vendor/autoload.php'); $analyzer = new Reflectionist\Analyzer(); $result = $analyzer->addClass('vendor\ns\subns\class')->analyze()->getResults();
示例输入
<?php namespace Reflectionist; /** * Class Analyzer * * Analyzer class can be used for getting reflectionist's results for given class(es) * Usage example: $result = $analyzer->addClass("NameOfMyClass")->analyze()->getResults(); * In $result variable will be all the data about given class(es). * * @author Lauri Orgla <TheOrX@hotmail.com> * * @package Reflectionist */ class Analyzer { /** * Holds an array of classes that are added for analyzing. * @var array */ private $classes = []; /** * Holds and array of results after analyze() method has been called. * * @var mixed */ private $result = null; /** * @var Reflection\Parser\ClassParser */ private $classParser = null; /** * @author Lauri Orgla <TheOrX@hotmail.com> */ public function __construct() { $this->setClassParser(Factory\Factory::getClassParser()); } /** * analyze * This function is used for parsing all the classes. * Parsing results will be set to result variable and after parsing * you can call function getResult() to get the analyzer results. * * @author Lauri Orgla <TheOrX@hotmail.com> * * @return $this */ public function analyze() { $result = []; foreach ($this->getClasses() as $class) { $result[$class] = $this->getClassParser()->setClass($class)->parse()->getResult(); } $this->setResult($result); return $this; } /** * addClass adds class to local list of classes. * * @author Lauri Orgla <TheOrX@hotmail.com> * * @param $class * * @return $this */ public function addClass($class) { $this->setClasses(array_merge($this->getClasses(), [$class])); return $this; } /** * addClasses adds multiple classes from input $classes to local list of classes. * * @author Lauri Orgla <TheOrX@hotmail.com> * * @param array $classes * * @return $this */ public function addClasses(array $classes) { foreach ($classes as $class) { $this->addClass($class); } return $this; } /** * @author Lauri Orgla <TheOrX@hotmail.com> * * @return Reflection\Parser\ClassParser */ public function getClassParser() { return $this->classParser; } /** * @author Lauri Orgla <TheOrX@hotmail.com> * * @param $classParser * * @return $this */ public function setClassParser($classParser) { $this->classParser = $classParser; return $this; } /** * @author Lauri Orgla <TheOrX@hotmail.com> * * @param array $classes * * @return $this */ public function setClasses($classes) { $this->classes = $classes; return $this; } /** * @author Lauri Orgla <TheOrX@hotmail.com> * @return array */ public function getClasses() { return $this->classes; } /** * @author Lauri Orgla <TheOrX@hotmail.com> * * @param mixed $result * * @return $this */ public function setResult($result) { $this->result = $result; return $this; } /** * @author Lauri Orgla <TheOrX@hotmail.com> * @return mixed */ public function getResult() { return $this->result; } }
示例输出
Array
(
[Reflectionist\Analyzer] => Array
(
[phpdoc] => Array
(
[shortDescription] => Class Analyzer
[longDescription] => Analyzer class can be used for getting reflectionist's results for given class(es)
Usage example: $result = $analyzer->addClass("NameOfMyClass")->analyze()->getResults();
In $result variable will be all the data about given class(es).
[tags] => Array
(
[@author] => Array
(
[0] => Lauri Orgla <TheOrX@hotmail.com>
)
[@package] => Array
(
[0] => Reflectionist
)
)
)
[class] => Array
(
[name] => Reflectionist\Analyzer
[phpdoc] => Array
(
[shortDescription] => Class Analyzer
[longDescription] => Analyzer class can be used for getting reflectionist's results for given class(es)
Usage example: $result = $analyzer->addClass("NameOfMyClass")->analyze()->getResults();
In $result variable will be all the data about given class(es).
[tags] => Array
(
[@author] => Array
(
[0] => Lauri Orgla <TheOrX@hotmail.com>
)
[@package] => Array
(
[0] => Reflectionist
)
)
)
)
[constants] => Array
(
)
[properties] => Array
(
[classes] => Array
(
[accessType] => private
[name] => classes
[value] =>
[phpdoc] => Array
(
[shortDescription] => Holds an array of classes that are added for analyzing.
[longDescription] =>
[tags] => Array
(
[@var] => Array
(
[0] => array
)
)
)
[defaultValue] => Array
(
)
)
[result] => Array
(
[accessType] => private
[name] => result
[value] =>
[phpdoc] => Array
(
[shortDescription] => Holds and array of results after analyze() method has been called.
[longDescription] =>
[tags] => Array
(
[@var] => Array
(
[0] => mixed
)
)
)
[defaultValue] =>
)
[classParser] => Array
(
[accessType] => private
[name] => classParser
[value] =>
[phpdoc] => Array
(
[shortDescription] =>
[longDescription] =>
[tags] => Array
(
[@var] => Array
(
[0] => Reflection\Parser\ClassParser
)
)
)
[defaultValue] =>
)
)
[methods] => Array
(
[__construct] => Array
(
[accessType] => public
[name] => __construct
[parameters] => Array
(
)
[numberOfParameters] => 0
[numberOfRequiredParameters] => 0
[methodStaticVariables] => Array
(
)
[phpdoc] => Array
(
[shortDescription] =>
[longDescription] =>
[tags] => Array
(
[@author] => Array
(
[0] => Lauri Orgla <TheOrX@hotmail.com>
)
)
)
)
[analyze] => Array
(
[accessType] => public
[name] => analyze
[parameters] => Array
(
)
[numberOfParameters] => 0
[numberOfRequiredParameters] => 0
[methodStaticVariables] => Array
(
)
[phpdoc] => Array
(
[shortDescription] =>
[longDescription] => analyze
This function is used for parsing all the classes.
Parsing results will be set to result variable and after parsing
you can call function getResult() to get the analyzer results.
[tags] => Array
(
[@author] => Array
(
[0] => Lauri Orgla <TheOrX@hotmail.com>
)
[@return] => Array
(
[0] => $this
)
)
)
)
[addClass] => Array
(
[accessType] => public
[name] => addClass
[parameters] => Array
(
[class] => Array
(
[name] => class
[type] =>
[isOptional] =>
[position] => 0
[defaultValue] =>
)
)
[numberOfParameters] => 1
[numberOfRequiredParameters] => 1
[methodStaticVariables] => Array
(
)
[phpdoc] => Array
(
[shortDescription] => addClass adds class to local list of classes.
[longDescription] =>
[tags] => Array
(
[@author] => Array
(
[0] => Lauri Orgla <TheOrX@hotmail.com>
)
[@param] => Array
(
[0] => $class
)
[@return] => Array
(
[0] => $this
)
)
)
)
[addClasses] => Array
(
[accessType] => public
[name] => addClasses
[parameters] => Array
(
[classes] => Array
(
[name] => classes
[type] => Array
[isOptional] =>
[position] => 0
[defaultValue] =>
)
)
[numberOfParameters] => 1
[numberOfRequiredParameters] => 1
[methodStaticVariables] => Array
(
)
[phpdoc] => Array
(
[shortDescription] => addClasses adds multiple classes from input $classes to local list of classes.
[longDescription] =>
[tags] => Array
(
[@author] => Array
(
[0] => Lauri Orgla <TheOrX@hotmail.com>
)
[@param] => Array
(
[0] => array $classes
)
[@return] => Array
(
[0] => $this
)
)
)
)
[getClassParser] => Array
(
[accessType] => public
[name] => getClassParser
[parameters] => Array
(
)
[numberOfParameters] => 0
[numberOfRequiredParameters] => 0
[methodStaticVariables] => Array
(
)
[phpdoc] => Array
(
[shortDescription] =>
[longDescription] =>
[tags] => Array
(
[@author] => Array
(
[0] => Lauri Orgla <TheOrX@hotmail.com>
)
[@return] => Array
(
[0] => Reflection\Parser\ClassParser
)
)
)
)
[setClassParser] => Array
(
[accessType] => public
[name] => setClassParser
[parameters] => Array
(
[classParser] => Array
(
[name] => classParser
[type] =>
[isOptional] =>
[position] => 0
[defaultValue] =>
)
)
[numberOfParameters] => 1
[numberOfRequiredParameters] => 1
[methodStaticVariables] => Array
(
)
[phpdoc] => Array
(
[shortDescription] =>
[longDescription] =>
[tags] => Array
(
[@author] => Array
(
[0] => Lauri Orgla <TheOrX@hotmail.com>
)
[@param] => Array
(
[0] => $classParser
)
[@return] => Array
(
[0] => $this
)
)
)
)
[setClasses] => Array
(
[accessType] => public
[name] => setClasses
[parameters] => Array
(
[classes] => Array
(
[name] => classes
[type] =>
[isOptional] =>
[position] => 0
[defaultValue] =>
)
)
[numberOfParameters] => 1
[numberOfRequiredParameters] => 1
[methodStaticVariables] => Array
(
)
[phpdoc] => Array
(
[shortDescription] =>
[longDescription] =>
[tags] => Array
(
[@author] => Array
(
[0] => Lauri Orgla <TheOrX@hotmail.com>
)
[@param] => Array
(
[0] => array $classes
)
[@return] => Array
(
[0] => $this
)
)
)
)
[getClasses] => Array
(
[accessType] => public
[name] => getClasses
[parameters] => Array
(
)
[numberOfParameters] => 0
[numberOfRequiredParameters] => 0
[methodStaticVariables] => Array
(
)
[phpdoc] => Array
(
[shortDescription] =>
[longDescription] =>
[tags] => Array
(
[@author] => Array
(
[0] => Lauri Orgla <TheOrX@hotmail.com>
)
[@return] => Array
(
[0] => array
)
)
)
)
[setResult] => Array
(
[accessType] => public
[name] => setResult
[parameters] => Array
(
[result] => Array
(
[name] => result
[type] =>
[isOptional] =>
[position] => 0
[defaultValue] =>
)
)
[numberOfParameters] => 1
[numberOfRequiredParameters] => 1
[methodStaticVariables] => Array
(
)
[phpdoc] => Array
(
[shortDescription] =>
[longDescription] =>
[tags] => Array
(
[@author] => Array
(
[0] => Lauri Orgla <TheOrX@hotmail.com>
)
[@param] => Array
(
[0] => mixed $result
)
[@return] => Array
(
[0] => $this
)
)
)
)
[getResult] => Array
(
[accessType] => public
[name] => getResult
[parameters] => Array
(
)
[numberOfParameters] => 0
[numberOfRequiredParameters] => 0
[methodStaticVariables] => Array
(
)
[phpdoc] => Array
(
[shortDescription] =>
[longDescription] =>
[tags] => Array
(
[@author] => Array
(
[0] => Lauri Orgla <TheOrX@hotmail.com>
)
[@return] => Array
(
[0] => mixed
)
)
)
)
)
)
)