Annotation
PhpBoot 框架较多的使用了 Annotation。当然原生 PHP 语言并不支持此项特性,所以实际是通过Reflection提取注释并解析实现,类似很多主流 PHP 框架的做法(如 symfony、doctrine 等)。但又有所不同的是,主流的Annotation 语法基本沿用了 java 中的形式,如:
/**
* @Route("/books/{id}", name="book_info")
* @Method("GET")
*/
public function getBook($id)...
语法严谨,易于扩展,但稍显啰嗦(PhpBoot 1.x 版本也使用此语法)。特别是PHP 由于先天不足(原生不支持Annotation),通过注释,在没有IDE语法提示和运行时检查机制的情况下。如果写 Annotation 过于复杂,那还不然直接写原生代码。所以 PhpBoot 使用了更简单的 Annotation 语法。如:
/**
* @route GET /books/{id}
*/
public function getBook($id)...
1. 语法
@<name> [param0] [param1] [param2] ...
- name 只能是连续的字母、数字、斜杠'\'、中横杠'-' 组成的字符串,建议全小写,单词间用'-'分割,如
@myapp\my-ann
。 - name和参数,参数和参数见,用空白符(一个或多个连续的空格、制表符)分割。
- 参数中如果包含空格,应将参数用双引号""包围,包围内的双引号用\转义,如
@my-ann "the param \"0\"" param1
第一个参数为the param "0"
分割参数、转义的语法和linux 命令行的语法类似
2. 嵌套
嵌套注释,用{}包围, 比如@param int size {@v min:0|max:10}