1 # PHP Simple Annotations
5 Get [composer](http://getcomposer.org/) and learn to use it.
7 Library is on [packagist](https://packagist.org/packages/jan-swiecki/simple-annotations).
9 If you refuse to use composer then instead of `include_once "vendor/autoload.php"` use `include_once "src/DocBlockReader/Reader.php"`.
13 DocBlock variable names does not matter. DocBlock Reader converts type of values basing on the context (see examples).
15 * `$reader = new \DocBlockReader\Reader(String $className, String $methodName)`
17 Initialize DocBlock Reader on `$className::$methodName`.
19 * `$reader->getParameter(String $key)`
21 Returns DocBlock value of parameter `$key`. E.g.
28 * @awesomeVariable "I am a string"
37 then `$reader->getParameter("awesomeVariable")` will return string `I am a string` (without quotes).
39 * `$reader->getParameters()`
41 returns array of all parameters (see examples below).
43 * `$reader->getVariableDeclarations()`
49 Examples based on ReaderTest.php.
51 ### Type conversion example
56 include_once "vendor/autoload.php";
67 * @var6 {"x": {"y": "z"}}
68 * @var7 {"x": {"y": ["z", "p"]}}
79 private function MyMethod()
84 $reader = new DocBlockReader\Reader("MyClass", "MyMethod");
86 var_dump($reader->getParameters());
92 <pre class='xdebug-var-dump' dir='ltr'>
93 <b>array</b> <i>(size=14)</i>
94 'var0' <font color='#888a85'>=></font> <small>float</small> <font color='#f57900'>1.5</font>
95 'var1' <font color='#888a85'>=></font> <small>int</small> <font color='#4e9a06'>1</font>
96 'var2' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'123'</font> <i>(length=3)</i>
97 'var3' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'abc'</font> <i>(length=3)</i>
98 'var4' <font color='#888a85'>=></font>
99 <b>array</b> <i>(size=2)</i>
100 0 <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'a'</font> <i>(length=1)</i>
101 1 <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'b'</font> <i>(length=1)</i>
102 'var5' <font color='#888a85'>=></font>
103 <b>array</b> <i>(size=1)</i>
104 'x' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'y'</font> <i>(length=1)</i>
105 'var6' <font color='#888a85'>=></font>
106 <b>array</b> <i>(size=1)</i>
107 'x' <font color='#888a85'>=></font>
108 <b>array</b> <i>(size=1)</i>
109 'y' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'z'</font> <i>(length=1)</i>
110 'var7' <font color='#888a85'>=></font>
111 <b>array</b> <i>(size=1)</i>
112 'x' <font color='#888a85'>=></font>
113 <b>array</b> <i>(size=1)</i>
114 'y' <font color='#888a85'>=></font>
115 <b>array</b> <i>(size=2)</i>
116 0 <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'z'</font> <i>(length=1)</i>
117 1 <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'p'</font> <i>(length=1)</i>
118 'var8' <font color='#888a85'>=></font> <small>boolean</small> <font color='#75507b'>true</font>
119 'var9' <font color='#888a85'>=></font> <font color='#3465a4'>null</font>
120 'var10' <font color='#888a85'>=></font> <small>boolean</small> <font color='#75507b'>true</font>
121 'var11' <font color='#888a85'>=></font> <small>boolean</small> <font color='#75507b'>true</font>
122 'var12' <font color='#888a85'>=></font> <small>boolean</small> <font color='#75507b'>false</font>
123 'var13' <font color='#888a85'>=></font> <font color='#3465a4'>null</font>
126 ### Multi value example
131 include_once "vendor/autoload.php";
142 private function MyMethod()
147 $reader = new DocBlockReader\Reader("MyClass", "MyMethod");
149 var_dump($reader->getParameters());
155 <pre class='xdebug-var-dump' dir='ltr'>
156 <b>array</b> <i>(size=3)</i>
157 'var' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'x'</font> <i>(length=1)</i>
158 'var2' <font color='#888a85'>=></font> <small>int</small> <font color='#4e9a06'>1024</font>
159 'param' <font color='#888a85'>=></font>
160 <b>array</b> <i>(size=3)</i>
161 0 <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'string x'</font> <i>(length=8)</i>
162 1 <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'integer y'</font> <i>(length=9)</i>
163 2 <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'array z'</font> <i>(length=7)</i>
166 ### Variables on the same line
171 include_once "vendor/autoload.php";
178 * @postParam x @postParam y
181 private function MyMethod()
186 $reader = new DocBlockReader\Reader("MyClass", "MyMethod");
188 var_dump($reader->getParameters());
193 <pre class='xdebug-var-dump' dir='ltr'>
194 <b>array</b> <i>(size=4)</i>
195 'get' <font color='#888a85'>=></font> <small>boolean</small> <font color='#75507b'>true</font>
196 'post' <font color='#888a85'>=></font> <small>boolean</small> <font color='#75507b'>true</font>
197 'ajax' <font color='#888a85'>=></font> <small>boolean</small> <font color='#75507b'>true</font>
198 'postParam' <font color='#888a85'>=></font>
199 <b>array</b> <i>(size=3)</i>
200 0 <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'x'</font> <i>(length=1)</i>
201 1 <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'y'</font> <i>(length=1)</i>
202 2 <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'z'</font> <i>(length=1)</i>
205 ### Variable declarations functionality example
207 I found below functionality useful for filtering `$_GET`/`$_POST` data in CodeIgniter. Hopefully I will soon release my CodeIgniter's modification.
212 include_once "vendor/autoload.php";
218 * @param integer var2
220 private function MyMethod()
225 $reader = new DocBlockReader\Reader("MyClass", "MyMethod");
227 var_dump($reader->getVariableDeclarations("param"));
232 <pre class='xdebug-var-dump' dir='ltr'>
233 <b>array</b> <i>(size=2)</i>
234 0 <font color='#888a85'>=></font>
235 <b>array</b> <i>(size=2)</i>
236 'type' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'string'</font> <i>(length=6)</i>
237 'name' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'var1'</font> <i>(length=4)</i>
238 1 <font color='#888a85'>=></font>
239 <b>array</b> <i>(size=2)</i>
240 'type' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'integer'</font> <i>(length=7)</i>
241 'name' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'var2'</font> <i>(length=4)</i>