PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了自引用模型导致Laravel 4中x的最大函数嵌套级别大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在做一个相当大的Laravel项目,并且正在使用存储库.

我有一个用户存储库,它像这样注入其依赖项:

public function __construct(CartRepository $cartRepo...)

这将导致以下错误

@H_941_6@maximum function nesTing level of '100' reached, aborTing!

我认为这是因为CartRepo注入了ItemRepo,而后者又注入了UserRepo,从而导致了无限的嵌套循环.

我没有得到的是如何找到解决方法,当项目绑定到用户时,ItemRepo需要UserRepo吗?

有人遇到过吗?如果是这样,您如何解决呢?

我知道我可以增加xdebug.max_nesTing_level,但是即使将其值设置为750,它仍然会引发错误,我宁愿解决根本的问题,也不仅仅是将其掩埋.

解决方法:

您的依存关系图中有一个循环:

UserRepo -> CartRepo -> ItemRepo -> UserRepo -> …

您无法解决.这是一个无限循环,xdebug.max_nesTing_level不会帮助您.

我很惊讶Laravel DI容器没有抛出明确的异常.

您必须重新虑服务/存储库之间的依赖性,也许是通过将一些类拆分为较小的,耦合较少的对象.

更新:糟糕,我忘记了几个解决方案!

>二传手注射

您可以将其注入设置器中,而不是在构造函数中注入依赖项,后者将在构造对象之后调用.用伪代码,看起来像这样

$userRepo = new UserRepository();
$cartRepo = new CartRepository($userRepo);
$userRepo->setCartRepo($userRepo);

>懒惰注射

我不知道Laravel是否支持延迟注入,但这也是一个解决方案:容器将注入代理对象而不是实际的依赖项.该代理对象仅在被访问时才加载依赖项,从而消除了在调用构造函数时构建依赖项的需要.

大佬总结

以上是大佬教程为你收集整理的自引用模型导致Laravel 4中x的最大函数嵌套级别全部内容,希望文章能够帮你解决自引用模型导致Laravel 4中x的最大函数嵌套级别所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: