zonuexe / simple-annotations
简单的注释解析器
0.3.1
2016-08-19 16:47 UTC
Requires
- php: >= 5.4.0
Requires (Dev)
- etsy/phan: ^0.6.0
- phpunit/phpunit: ^4.8|^5.5
README
安装
获取 composer 并学习如何使用它。
库位于 packagist。
如果您拒绝使用 composer,那么请使用 include_once "src/DocBlockReader/Reader.php"
而不是 include_once "vendor/autoload.php"
。
测试
您需要 PHPUnit。获取它之后运行
> git clone https://github.com/jan-swiecki/php-simple-annotations
> cd php-simple-annotations
> composer install
> phpunit
API
$reader = new \DocBlockReader\Reader(String $className)
在类 $className
上初始化 DocBlock Reader
$reader = new \DocBlockReader\Reader(String $className, String $methodName)
在方法 $className::$methodName
上初始化 DocBlock Reader
$reader->getParameter(String $key)
返回参数 $key
的 DocBlock 值。例如。
<?php class MyClass { /** * @awesomeVariable "I am a string" */ public function fn() { } }
那么 $reader->getParameter("awesomeVariable")
将返回字符串 I am a string
(不带引号)。
$reader->getParameters()
返回所有参数的数组(见以下示例)。
$reader->getVariableDeclarations()
见最后一个示例。
示例
基于 ReaderTest.php 的示例。
注意:DocBlock Reader 根据上下文转换值类型(见下文)。
类型转换示例
<?php include_once "vendor/autoload.php"; class MyClass { /** * @var0 1.5 * @var1 1 * @var2 "123" * @var3 abc * @var4 ["a", "b"] * @var5 {"x": "y"} * @var6 {"x": {"y": "z"}} * @var7 {"x": {"y": ["z", "p"]}} * * @var8 * @var9 null * * @var10 true * @var11 tRuE * @var12 false * @var13 null * */ private function MyMethod() { } }; $reader = new DocBlockReader\Reader("MyClass", "MyMethod"); var_dump($reader->getParameters());
将打印
array (size=14) 'var0' => float 1.5 'var1' => int 1 'var2' => string '123' (length=3) 'var3' => string 'abc' (length=3) 'var4' => array (size=2) 0 => string 'a' (length=1) 1 => string 'b' (length=1) 'var5' => array (size=1) 'x' => string 'y' (length=1) 'var6' => array (size=1) 'x' => array (size=1) 'y' => string 'z' (length=1) 'var7' => array (size=1) 'x' => array (size=1) 'y' => array (size=2) 0 => string 'z' (length=1) 1 => string 'p' (length=1) 'var8' => boolean true 'var9' => null 'var10' => boolean true 'var11' => string 'tRuE' (length=4) 'var12' => boolean false 'var13' => null
多值示例
<?php include_once "vendor/autoload.php"; class MyClass { /** * @var x * @var2 1024 * @param string x * @param integer y * @param array z */ private function MyMethod() { } }; $reader = new DocBlockReader\Reader("MyClass", "MyMethod"); var_dump($reader->getParameters());
将打印
array (size=3) 'var' => string 'x' (length=1) 'var2' => int 1024 'param' => array (size=3) 0 => string 'string x' (length=8) 1 => string 'integer y' (length=9) 2 => string 'array z' (length=7)
同一行的变量
<?php include_once "vendor/autoload.php"; class MyClass { /** * @get @post * @ajax * @postParam x @postParam y * @postParam z */ private function MyMethod() { } }; $reader = new DocBlockReader\Reader("MyClass", "MyMethod"); var_dump($reader->getParameters());
将打印
array (size=4) 'get' => boolean true 'post' => boolean true 'ajax' => boolean true 'postParam' => array (size=3) 0 => string 'x' (length=1) 1 => string 'y' (length=1) 2 => string 'z' (length=1)
变量声明功能示例
我发现以下功能对于在 CodeIgniter 中过滤 $_GET
/$_POST
数据非常有用。希望我很快会发布我的 CodeIgniter 的修改版本。
<?php include_once "vendor/autoload.php"; class MyClass { /** * @param string var1 * @param integer var2 */ private function MyMethod() { } }; $reader = new DocBlockReader\Reader("MyClass", "MyMethod"); var_dump($reader->getVariableDeclarations("param"));
将打印
array (size=2) 0 => array (size=2) 'type' => string 'string' (length=6) 'name' => string 'var1' (length=4) 1 => array (size=2) 'type' => string 'integer' (length=7) 'name' => string 'var2' (length=4)