| 1 | 2 | simandl | <?php |
| 2 | | | |
| 3 | | | namespace Phem; |
| 4 | | | |
| 5 | | | use Phem\Core\Collection; |
| 6 | | | |
| 7 | | | /** |
| 8 | | | * Description of Annotation |
| 9 | | | * |
| 10 | | | * @author kubapet |
| 11 | | | */ |
| 12 | | | class Annotation |
| 13 | | | { |
| 14 | | | |
| 15 | | | /** @return array */ |
| 16 | | | static function parse($docComment) |
| 17 | | | { |
| 18 | | | preg_match_all("/\\@(form|textbox|selectbox|datebox|checkbox|xmlelement|xmlattribute|xmlobject|xmlvalue)\\s*(?:\\((.*?)\\))?/is", $docComment, $matches, PREG_SET_ORDER); |
| 19 | | | $result = new Collection(); |
| 20 | | | foreach ($matches as $match) |
| 21 | | | { |
| 22 | | | $annotation = new Annotation; |
| 23 | | | $annotation->name = strtolower($match[1]); |
| 24 | | | if (count($match) > 2) |
| 25 | | | $annotation->params = preg_split("/\\s*\\,\\s*/", trim($match[2]), -1, PREG_SPLIT_NO_EMPTY); |
| 26 | | | $result->put($annotation->name,$annotation); |
| 27 | | | } |
| 28 | | | return $result; |
| 29 | | | } |
| 30 | | | |
| 31 | | | private $name; |
| 32 | | | private $params; |
| 33 | | | |
| 34 | | | protected function __construct() |
| 35 | | | { |
| 36 | | | |
| 37 | | | } |
| 38 | | | |
| 39 | | | function getName() |
| 40 | | | { |
| 41 | | | return $this->name; |
| 42 | | | } |
| 43 | | | |
| 44 | | | function getParamCount() |
| 45 | | | { |
| 46 | | | return count($this->params); |
| 47 | | | } |
| 48 | | | |
| 49 | | | function getParam($index) |
| 50 | | | { |
| 51 | | | return $this->params[$index]; |
| 52 | | | } |
| 53 | | | |
| 54 | | | public function getParams() |
| 55 | | | { |
| 56 | | | return $this->params; |
| 57 | | | } |
| 58 | | | |
| 59 | | | } |