【问题标题】:Why is my Class found in controller but not in model in Laravel?为什么我的类在控制器中找到但在 Laravel 的模型中没有?
【发布时间】:2020-09-13 07:42:22
【问题描述】:

--请无视,我已经解决了问题;见下文 - 我在控制器中有使用 Nexmo 的代码,它在命名空间为“App\Http\Controllers”的那个控制器中运行良好。

$basic = new Nexmo\Client\Credentials\Basic('xxxxxxx', 'xxxxxxxxxxxx');

但是,我决定重构并将这段代码放入命名空间只是“App”的模型中。 现在我在这一行收到“找不到类”错误。我猜这个问题是由于我对命名空间或路径的误解。

【问题讨论】:

  • 请分享控制器和模型

标签: php laravel namespaces


【解决方案1】:

如果命名空间前面没有\,编译器将从当前命名空间开始查找。

所以,要么在类名前添加 \,要么在 PHP 文件的顶部包含命名空间。

$basic = new \Nexmo\Client\Credentials\Basic('xxxxxxx', 'xxxxxxxxxxxx');
//           ^ here

这在您的控制器中起作用的原因可能是因为您的 PHP 文件顶部包含 Nexmo

【讨论】:

  • 如果我按照您的建议添加\,错误只会更改为“Class Nexmo\Client\Credentials\Basic Not Found”而不是“Class App\Nexmo\Client\Credentials\Basic未找到”。我在控制器 PHP 文件中没有包含 Nexmo。
【解决方案2】:

您是否尝试过在类声明上方添加use Nexmo\Client\Credentials\Basic,然后在模型中添加$basic = new Basic('xxxxxxx', 'xxxxxxxxxxxx');

【讨论】:

    【解决方案3】:

    好吧,我觉得我很傻。我已恢复 git 以删除我已安装但不想要的 Laravel 包,我回过头并删除了 Nexmo 客户端安装,这显然解释了为什么找不到该类。我重新安装了 Nexmo 软件包,然后……瞧!有用。 我很抱歉浪费了人们的时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-21
      • 2019-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多