如何在 PHP 中使用注解

3,133 阅读1分钟

什么是注解?

提起注解第一个联想到的编程语言就是 JAVA。注解提供一种非侵入式的方式扩展代码逻辑,注解的常见使用范围:文档生成、数据检查、运行时的动态处理、编译时的动态处理。PHP 官方是不支持注解功能的、如果要实现注解功能要不自己实现、要不使用第三方包。今天主要介绍通过第三方包的方式实现 PHP 注解功能。

安装 doctrine/annotations

通过扫描注解、将注解映射为 Class 进行处理

$ composer require doctrine/annotations

创建注解

/**
 * @Annotation
 * @Target({"PROPERTY"})
 */
final class TestAnnotations
{
  /**
   * @Required()
   *
   * @var string
  */
  public $name;
}
  

@Annotation:标记是一个注解类

@Target:标记注解生效范围 (ALL,CLASS,METHOD,PROPERTY,ANNOTATION)

@Required:标记该属性是必须的

使用注解

class Test
{
  /**
   * @TestAnnotations(name="我是一个注解")
   */
  private $name;
}

读取注解

$reflectionClass = new ReflectionClass(Test::class);
$reder = new AnnotationReader();

$annotation = $reder->getPropertyAnnotation(
  $reflectionClass->getProperty('name'), 
  TestAnnotations::class);

echo $annotation->name; // result: "我是一个注解"

实际使用

因为近期的一个需求需要多个系统的数据进行聚合展示,因为只能通过调用旧的 API 获取数据造成多个系统的数据字段不同。因为为了完成数据清洗我们可以引入注解。先定义好返回的结构体Class,每个属性上添加注解标记各个系统的字段名称、以及数据最终返回的类型,各个系统返回的数据作为参数传入,通过对注解的读取进行数据的转换。