ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php+swoole实现注解路由原理

2021-06-01 12:01:54  阅读:340  来源: 互联网

标签:doctrine swoole re 注册 reader 注解 php 路由


①    通过composer引入doctrine组件:

 

"require": {

    "doctrine/annotations":"^1.6"

  }

 

②    注册路由和路由分发两大步,用的是swoole框架可以通过静态变量存储在内存中

 

(1)   注册路由:

在doctrine包里有个自动加载注解类(规则)到组件当中的方法 (这样就不会产生文件不存在或者找不到而报错)

    $loader = require dirname(__DIR__) . "/vendor/autoload.php";

AnnotationRegistry::registerLoader([$loader,'loadClass']);

 

通过glob()函数去注册所有路由

    $reader = new AnnotationReader(); // 注解的读取类
    // 类注解,通过反射获取对应类的对象,可以从中取出类注解的所有前缀、属性、方法注释对象
  $re = new \ReflectionClass($obj);
  $class_annos = $reader->getClassAnnotations($re);
    // 通过反射得到所有的方法
    $refMethods = $re->getMethods();
    // 读取注解方法信息
    $methodAnnos = $reader->getMethodAnnotations($method);
    $routePath = $methodAnno->getRoute();
  // 在某个解析类当中处理逻辑
  (new RequestMappingParser())->parse($routePrefix,$routePath,$re->newInstance(),$method->name);

 

完成注册路由

 

(2)路由分发

      

       通过request对象获取路由,遍历所有注册路由去匹对,调用控制器以此完成路由分发。

 

 

 

注:注解类型

标签:doctrine,swoole,re,注册,reader,注解,php,路由
来源: https://www.cnblogs.com/zhyphp/p/14836630.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有