当前位置:   article > 正文

hyperf 自定义注解

hyperf 自定义注解

 自定义注解

  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Annotation;
  4. use Hyperf\Di\Annotation\AbstractAnnotation;
  5. /**
  6. * @Annotation
  7. * @Target({"CLASS","METHOD"}) #CLASS 参考问档
  8. */
  9. class Foo extends AbstractAnnotation
  10. {
  11. /**
  12. * @var string
  13. */
  14. public $bar;
  15. /**
  16. * @var string
  17. */
  18. public $baz;
  19. public function __construct($value = null)
  20. {
  21. parent::__construct($value);
  22. //在引用注解时没有传递Key=>value方式时,可以再次进行赋值
  23. $this->bindMainProperty('bar',$value);
  24. }
  25. }

在方法中测试一下

  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\v1\User;
  4. use App\Annotation\Foo;
  5. use Hyperf\Di\Annotation\AnnotationCollector;
  6. use Hyperf\HttpServer\Annotation\AutoController;
  7. use Hyperf\HttpServer\Contract\RequestInterface;
  8. /**
  9. * @AutoController(prefix="user")
  10. * @Foo("123")
  11. */
  12. class IndexController extends BaseController
  13. {
  14. public function index(RequestInterface $request)
  15. {
  16. //注解内的数据会被收集到 Hyperf\Di\Annotation\AnnotationCollector 类供应用程序使用
  17. //类注解获取方式
  18. var_dump(AnnotationCollector::getClassByAnnotation(Foo::class));
  19. return "hello Hyperf~!";
  20. }
  21. }
  22. }

再看看命令行是否打印出来了

  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\v1\User;
  4. use App\Annotation\Foo;
  5. use Hyperf\Di\Annotation\AnnotationCollector;
  6. use Hyperf\HttpServer\Annotation\AutoController;
  7. use Hyperf\HttpServer\Contract\RequestInterface;
  8. /**
  9. * @AutoController(prefix="user")
  10. */
  11. class IndexController extends BaseController
  12. {
  13. /**
  14. * @Foo("123")
  15. */
  16. public function index(RequestInterface $request)
  17. {
  18. //注解内的数据会被收集到 Hyperf\Di\Annotation\AnnotationCollector 类供应用程序使用
  19. //方法注解获取方式
  20. var_dump(AnnotationCollector::getMethodByAnnotation(Foo::class));
  21. //类注解获取方式
  22. var_dump(AnnotationCollector::getClassByAnnotation(Foo::class));
  23. return "hello Hyperf~!";
  24. }
  25. }

结果

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/548749
推荐阅读
相关标签
  

闽ICP备14008679号