是不是不能在基类里面返回响应,只能在访问的控制器方法里面返回响应

gddd

是不是不能在基类里面返回响应,只能在访问的控制器方法里面返回响应

1168 3 0
3个回答

gddd

A控制器(有C方法)继承B控制器(有D方法)
C中调用了D去做验证
只能在C里面返回响应,在D方法中就算返回了响应,也需要在C中判断是对象,再返回响应,不能在D中就直接响应到前端接口
是因为没法exit吗

  • 10bang 2022-04-11

    可以在D方法抛异常

  • gddd 2022-04-11

    用抛异常的方式去直接返回响应吗?

  • 10bang 2022-04-11

    你可以看看这个插件https://www.workerman.net/plugin/16

  • Maoxp 2022-04-12

    可以直接在D里面return Response对象的

  • gddd 2022-04-12

    做异常是正解,在D返回了响应对象,还是得在C做判断

  • Maoxp 2022-04-12

    可以正常返回的啊?不知道楼下的步骤是不是你所要的

  • 小学生上大学 2023-02-10

    一句话,一路调用,一路return

Maoxp

截图
截图

User控制器(有test方法)继承B控制器(有base方法),结果返回是B的结果
截图

如果B控制器中是普通方法,也是可以返回的,
截图
截图
截图

  • gddd 2022-04-12

    可能是我表达的不清楚,你这还是在user的方法里面return了的。我的意思是直接B的base里面return就结束了。不用return $this->base(); 直接$this->base()。就可以了

  • gddd 2022-04-12

    比如你的$this->base()前后都有业务,base就是一个验证,如果失败了,直接就返回要接口响应了

  • Maoxp 2022-04-12

    如果是调用的对象的是方法base,base昨晚逻辑处理后,你在base中return了,以为就OK。这是肯定不对的。你外部调用它,还没接收他啊。必须要去接收调用的结果的,目前你是直接异常抛出,让全局异常处理器去补获,响应返回的。

  • Maoxp 2022-04-12

    只要你不中断,不管哪个方式都得接收。被拦截、当做切点,包括直接异常抛出等方式除外

  • 小学生上大学 2023-02-10

    一路调用一路return,我也再平移项目,就遇到了这个问题,所以啊还是之前的程序不规范。有的方法又有业务又有错误提示

ersic

抛出异常 throw new Exception('returnData' 0);

如果自带的异常不满足,可以自定义异常类
https://www.workerman.net/doc/webman/exception.html

  • 暂无评论
年代过于久远,无法发表回答
🔝