1 Star 7 Fork 0

Josin / PHP原生注解

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 1.81 KB
一键复制 编辑 原始数据 按行查看 历史
liqiongfan 提交于 2019-08-18 13:35 . 增加索引数组注解参数

PHP原生注解

特点

  • 原生语法支持注解
  • PHP版本7.1.29
  • 支持类注解、方法注解

安装流程

  • 下载源码
  • 编译安装
./buildconf --force
./configure --prefix=/usr/local/php7129 --disable-all; 根据您的需求安装扩展包 这里未安装任何扩展
make -j && sudo make install
  • 愉快的体验原生注解的魔力

工作流程

PHP --> AST -> 注解 -> __annotations

引擎工作在PHP语法层面,因此执行流程会早于代码阶段,这点需要注意,否则您会遇到一些意想不到的问题.

PHP解析引擎 在解析到 注解 后,会调用魔术方法:__annotations 将当前的注解类名注解参数 传入魔术方法中,以待开发者处理,由于 PHP引擎 层面,解析阶段不进行 ASTOPCODE 编译,因此 AST 阶段处理注解类名存在一些问题,所以暂时的处理手段就是传入魔术方法进行处理,后续版本会优化好。

注解种类

  • 无参数注解
@Inject
@Inject()
  • 参数注解
@Inject(val="Injection")
@Inject(val="Injection", mode="2")
@Inject("A", "B")
@Inject("A", version="2.2.8")
@Inject(min="1.8", "Hello")

注意:注解只支持字符串参数值,不支持其他类型,可以使用单引号或者双引号都可以

示例

假设您安装好了此版本的PHP

<?php
  
function __annotations($className, $annotations, $mClassName, $mFunctionName)
{
   // 第一个参数为注解类名
   // 第二个参数为注解的参数
   // 第三个参数为注解修饰类的类名
   // 第四个参数为注解修饰的的方法名
}

@Inject(val="Hello")
@var
class Test
{
  	@before()
  	public function getVersion()
    { 
    }
}
C
1
https://gitee.com/josinli/php_native_annotations.git
git@gitee.com:josinli/php_native_annotations.git
josinli
php_native_annotations
PHP原生注解
master

搜索帮助