首页PHP文章详情

thinkphp6开启注解路由后,提示控制器类 Class /app/app/admin/controller/Index.php does not exist 解决方法

By 沐晴 / Apr 4, 2020 阅读 0 评论 0 发表于 PHP 字数:847 阅读时间:9秒

thinkphp6注解路由

摘要:ThinkPHP支持使用注解方式定义路由,如何正确开启?

目录

1. 安装注解路由

  1. composer require topthink/think-annotation

2. 在控制器中使用

  1. <?php
  2. namespace app\controller;
  3. use think\annotation\Route;
  4. class Index
  5. {
  6. /**
  7. * @param string $name 数据名称
  8. * @return mixed
  9. * @Route("hello/:name")
  10. */
  11. public function hello($name)
  12. {
  13. return 'hello,'.$name;
  14. }
  15. }

3. 出现错误:Class does not exist 提示

  1. #0 [-1]ReflectionException in InteractsWithRoute.php line 55
  2. Class /private/var/www/project/mishop/app/admin/controller/Index.php does not exist

4. 解决方法

4.1. 打开 InteractsWithRoute.php 文件

  1. 应用目录/vendor/topthink/think-annotation/src/InteractsWithRoute.php

4.2. 找到 54 行以下代码修改

  1. //修改前
  2. protected function scanDir($dir)
  3. {
  4. foreach (ClassMapGenerator::createMap($dir) as $class) {
  5. ...
  6. //修改后
  7. protected function scanDir($dir)
  8. {
  9. foreach (ClassMapGenerator::createMap($dir) as $class =>$path) {
  10. ...

保存,刷新浏览器,则可以正常thinkphp6的注解功能了!

结论

目前注解还存在一些bug,谨慎使用!

手机扫码阅读,舒服~

⌘ + Return 发表
最新 最早 全部评论0 条评论