成员属性注解

我们直接查看以下例子:

  1. namespace App\HttpController;
  2. use EasySwoole\HttpAnnotation\AnnotationController;
  3. use EasySwoole\HttpAnnotation\AnnotationTag\Context;
  4. use EasySwoole\HttpAnnotation\AnnotationTag\Di;
  5. use EasySwoole\HttpAnnotation\AnnotationTag\Inject;
  6. class Test
  7. {
  8. public function __construct($a, $b)
  9. {
  10. }
  11. }
  12. class Index extends AnnotationController
  13. {
  14. /**
  15. * @Di(key="di")
  16. */
  17. public $di;
  18. /**
  19. * @Context(key="context")
  20. */
  21. public $context;
  22. /**
  23. * @var \EasySwoole\HttpAnnotation\Tests\TestController\Test $inject
  24. * @Inject(className="\EasySwoole\HttpAnnotation\Tests\TestController\Test", args={1,{1,2}})
  25. */
  26. public $inject;
  27. }

@Di

@Di标签,完整命名空间是EasySwoole\HttpAnnotation\AnnotationTag\Di,用于在每次请求进来的时候,从IOC中取数据,并赋值到对应的属性中,以上等价于:

  1. $this->di = EasySwoole\Component\Di::getInstance()->get(di)

@Context

@Context标签,完整命名空间是EasySwoole\HttpAnnotation\AnnotationTag\Context,用于在每次请求进来的时候,从上下文管理器中取数据,并赋值到对应的属性中,以上等价于:

  1. $this->context = EasySwoole\Component\ContextManager::getInstance()->get(context)

@Inject

@Inject标签,完整命令空间是EasySwoole\HttpAnnotation\AnnotationTag\Inject,可注入类并且传入构造函数参数,以上等价于:

  1. new className(...$args)