Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

在方法上的多层中间件注解会导致报错 #5

Closed
luoyou opened this issue Aug 25, 2021 · 2 comments
Closed

在方法上的多层中间件注解会导致报错 #5

luoyou opened this issue Aug 25, 2021 · 2 comments

Comments

@luoyou
Copy link

luoyou commented Aug 25, 2021

 [ERROR] `/home/luo/code/qianfan/im/app/Controller/DemoController.php` refactor error, please consider submit issue at
         https://github.com/hyperf/code-generator


PHP Fatal error:  Uncaught LogicException: Invalid value in /home/luo/code/qianfan/im/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php:270
Stack trace:
#0 /home/luo/code/qianfan/im/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php(256): PhpParser\BuilderHelpers::normalizeValue()
#1 /home/luo/code/qianfan/im/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php(230): PhpParser\BuilderHelpers::normalizeValue()
#2 /home/luo/code/qianfan/im/vendor/hyperf/code-generator/src/Visitor/RewriteVisitor.php(222): PhpParser\BuilderFactory->args()
#3 /home/luo/code/qianfan/im/vendor/hyperf/code-generator/src/Visitor/RewriteVisitor.php(115): Hyperf\CodeGenerator\Visitor\RewriteVisitor->buildAttributeArgs()
#4 /home/luo/code/qianfan/im/vendor/hyperf/code-generator/src/Visitor/RewriteVisitor.php(96): Hyperf\CodeGenerator\Visitor\RewriteVisitor->generateAttributeAndSaveComments()
#5 /home/luo/code/qianfan/im/vendor/hyperf/code-generator/src/Visitor/RewriteVisitor.php(78): Hyperf\CodeGenerator\Visitor\RewriteVisitor->generateClassMethodAttributes()
#6 /home/luo/code/qianfan/im/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(230): Hyperf\CodeGenerator\Visitor\RewriteVisitor->leaveNode()
#7 /home/luo/code/qianfan/im/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(114): PhpParser\NodeTraverser->traverseArray()
#8 /home/luo/code/qianfan/im/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(223): PhpParser\NodeTraverser->traverseNode()
#9 /home/luo/code/qianfan/im/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(114): PhpParser\NodeTraverser->traverseArray()
#10 /home/luo/code/qianfan/im/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(223): PhpParser\NodeTraverser->traverseNode()
#11 /home/luo/code/qianfan/im/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(91): PhpParser\NodeTraverser->traverseArray()
#12 /home/luo/code/qianfan/im/vendor/hyperf/code-generator/src/Ast.php(41): PhpParser\NodeTraverser->traverse()
#13 /home/luo/code/qianfan/im/vendor/hyperf/code-generator/src/CodeGenerator.php(25): Hyperf\CodeGenerator\Ast->generate()
#14 /home/luo/code/qianfan/im/vendor/hyperf/code-generator/src/Command/CodeGenerateCommand.php(69): Hyperf\CodeGenerator\CodeGenerator->generate()
#15 /home/luo/code/qianfan/im/vendor/hyperf/utils/src/Functions.php(276): Hyperf\CodeGenerator\Command\CodeGenerateCommand->handle()
#16 /home/luo/code/qianfan/im/vendor/hyperf/command/src/Command.php(437): call()
#17 {main}
  thrown in /home/luo/code/qianfan/im/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php on line 270

Fatal error: Uncaught LogicException: Invalid value in /home/luo/code/qianfan/im/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php:270
Stack trace:
#0 /home/luo/code/qianfan/im/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php(256): PhpParser\BuilderHelpers::normalizeValue()
#1 /home/luo/code/qianfan/im/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php(230): PhpParser\BuilderHelpers::normalizeValue()
#2 /home/luo/code/qianfan/im/vendor/hyperf/code-generator/src/Visitor/RewriteVisitor.php(222): PhpParser\BuilderFactory->args()
#3 /home/luo/code/qianfan/im/vendor/hyperf/code-generator/src/Visitor/RewriteVisitor.php(115): Hyperf\CodeGenerator\Visitor\RewriteVisitor->buildAttributeArgs()
#4 /home/luo/code/qianfan/im/vendor/hyperf/code-generator/src/Visitor/RewriteVisitor.php(96): Hyperf\CodeGenerator\Visitor\RewriteVisitor->generateAttributeAndSaveComments()
#5 /home/luo/code/qianfan/im/vendor/hyperf/code-generator/src/Visitor/RewriteVisitor.php(78): Hyperf\CodeGenerator\Visitor\RewriteVisitor->generateClassMethodAttributes()
#6 /home/luo/code/qianfan/im/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(230): Hyperf\CodeGenerator\Visitor\RewriteVisitor->leaveNode()
#7 /home/luo/code/qianfan/im/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(114): PhpParser\NodeTraverser->traverseArray()
#8 /home/luo/code/qianfan/im/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(223): PhpParser\NodeTraverser->traverseNode()
#9 /home/luo/code/qianfan/im/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(114): PhpParser\NodeTraverser->traverseArray()
#10 /home/luo/code/qianfan/im/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(223): PhpParser\NodeTraverser->traverseNode()
#11 /home/luo/code/qianfan/im/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(91): PhpParser\NodeTraverser->traverseArray()
#12 /home/luo/code/qianfan/im/vendor/hyperf/code-generator/src/Ast.php(41): PhpParser\NodeTraverser->traverse()
#13 /home/luo/code/qianfan/im/vendor/hyperf/code-generator/src/CodeGenerator.php(25): Hyperf\CodeGenerator\Ast->generate()
#14 /home/luo/code/qianfan/im/vendor/hyperf/code-generator/src/Command/CodeGenerateCommand.php(69): Hyperf\CodeGenerator\CodeGenerator->generate()
#15 /home/luo/code/qianfan/im/vendor/hyperf/utils/src/Functions.php(276): Hyperf\CodeGenerator\Command\CodeGenerateCommand->handle()
#16 /home/luo/code/qianfan/im/vendor/hyperf/command/src/Command.php(437): call()
#17 {main}
  thrown in /home/luo/code/qianfan/im/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php on line 270

经排查,对应的代码为

namespace App\Controller;

use App\Constants\Res;
use Hyperf\HttpServer\Annotation\Controller;
use Hyperf\HttpServer\Annotation\Middleware;
use Hyperf\HttpServer\Annotation\Middlewares;
use Phper666\JWTAuth\Middleware\JWTAuthMiddleware;
use App\Middleware\ApiMiddleware;
use Hyperf\Utils\Codec\Json;
use Hyperf\HttpServer\Router\Dispatched;
use Hyperf\HttpServer\Router\DispatcherFactory;
use Hyperf\HttpServer\Annotation\PutMapping;
use Hyperf\HttpServer\Annotation\GetMapping;
/**
 * @Controller
 */
class DemoController extends AbstractController {
   
  // 此处省略其他代码 

   /**
     * @Middlewares({
     *      @Middleware(JWTAuthMiddleware::class),
     *      @Middleware(ApiMiddleware::class)
     * })
     */
    public function test(){
        $data = $this->jwt->getParserData();
        return $data;
    }
}
@limingxinleo
Copy link
Member

@weskiller 看看这个

@limingxinleo
Copy link
Member

2.2 里 MIddleware 支持写多个了

   /**
     * @Middlewares({
     *      @Middleware(JWTAuthMiddleware::class),
     *      @Middleware(ApiMiddleware::class)
     * })
     */

可以直接转化为

#[Middleware(JWTAuthMiddleware::class)]
#[Middleware(ApiMiddleware::class)]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants