# PHP原生注解 **Repository Path**: josinli/php_native_annotations ## Basic Information - **Project Name**: PHP原生注解 - **Description**: 支持原生PHP语法层面的注解模式,在原始的PHP层面增加注解功能 - **Primary Language**: C - **License**: MulanPSL-1.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 0 - **Created**: 2019-08-17 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## PHP原生注解 #### 特点 - 原生语法支持注解 - PHP版本7.1.29 - 支持类注解、方法注解 #### 安装流程 - 下载源码 - 编译安装 ```php ./buildconf --force ./configure --prefix=/usr/local/php7129 --disable-all; 根据您的需求安装扩展包 这里未安装任何扩展 make -j && sudo make install ``` - 愉快的体验原生注解的魔力 #### 工作流程 `PHP` --> `AST` -> `注解` -> `__annotations` 引擎工作在PHP语法层面,因此执行流程会早于代码阶段,这点需要注意,否则您会遇到一些意想不到的问题. `PHP解析引擎` 在解析到 `注解` 后,会调用魔术方法:`__annotations `将当前的`注解类名` 和 `注解参数` 传入魔术方法中,以待开发者处理,由于 `PHP引擎` 层面,解析阶段不进行 `AST` 转`OPCODE` 编译,因此 `AST` 阶段处理注解类名存在一些问题,所以暂时的处理手段就是传入魔术方法进行处理,后续版本会优化好。 #### 注解种类 - 无参数注解 ```php @Inject ``` ```php @Inject() ``` - 参数注解 ```php @Inject(val="Injection") ``` ```php @Inject(val="Injection", mode="2") ``` ```php @Inject("A", "B") ``` ```php @Inject("A", version="2.2.8") ``` ```php @Inject(min="1.8", "Hello") ``` 注意:注解只支持字符串参数值,不支持其他类型,可以使用单引号或者双引号都可以 #### 示例 **假设您安装好了此版本的PHP** ```php