赞
踩
自定义注解
- <?php
-
- declare(strict_types=1);
- namespace App\Annotation;
-
-
- use Hyperf\Di\Annotation\AbstractAnnotation;
-
- /**
- * @Annotation
- * @Target({"CLASS","METHOD"}) #CLASS 参考问档
- */
- class Foo extends AbstractAnnotation
- {
-
- /**
- * @var string
- */
- public $bar;
-
- /**
- * @var string
- */
- public $baz;
-
-
- public function __construct($value = null)
- {
- parent::__construct($value);
- //在引用注解时没有传递Key=>value方式时,可以再次进行赋值
- $this->bindMainProperty('bar',$value);
- }
- }
在方法中测试一下
- <?php
-
- declare(strict_types=1);
- namespace App\Controller\v1\User;
-
- use App\Annotation\Foo;
- use Hyperf\Di\Annotation\AnnotationCollector;
- use Hyperf\HttpServer\Annotation\AutoController;
- use Hyperf\HttpServer\Contract\RequestInterface;
-
- /**
- * @AutoController(prefix="user")
- * @Foo("123")
- */
- class IndexController extends BaseController
- {
-
- public function index(RequestInterface $request)
- {
- //注解内的数据会被收集到 Hyperf\Di\Annotation\AnnotationCollector 类供应用程序使用
- //类注解获取方式
- var_dump(AnnotationCollector::getClassByAnnotation(Foo::class));
- return "hello Hyperf~!";
- }
- }
- }
再看看命令行是否打印出来了
- <?php
-
- declare(strict_types=1);
-
- namespace App\Controller\v1\User;
-
- use App\Annotation\Foo;
- use Hyperf\Di\Annotation\AnnotationCollector;
- use Hyperf\HttpServer\Annotation\AutoController;
- use Hyperf\HttpServer\Contract\RequestInterface;
-
- /**
- * @AutoController(prefix="user")
- */
- class IndexController extends BaseController
- {
-
- /**
- * @Foo("123")
- */
- public function index(RequestInterface $request)
- {
- //注解内的数据会被收集到 Hyperf\Di\Annotation\AnnotationCollector 类供应用程序使用
- //方法注解获取方式
- var_dump(AnnotationCollector::getMethodByAnnotation(Foo::class));
- //类注解获取方式
- var_dump(AnnotationCollector::getClassByAnnotation(Foo::class));
- return "hello Hyperf~!";
- }
- }
结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。