Почему мой класс находится в контроллере, но не в модели в Laravel? - PullRequest
0 голосов
/ 26 мая 2020

- не обращайте внимания, я решил проблему; см. ниже - у меня есть код в контроллере для использования Nexmo, и он отлично работает в этом контроллере, где пространство имен - «App \ Http \ Controllers».

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

Однако я решил провести рефакторинг и поместить этот код в модель, где пространством имен является просто «Приложение». Теперь я получаю ошибку «Класс не найден» в этой строке. Я предполагаю, что проблема связана с неправильным пониманием с моей стороны пространств имен или путей.

Ответы [ 3 ]

0 голосов
/ 26 мая 2020

Пробовали ли вы добавить use Nexmo\Client\Credentials\Basic над объявлением класса, а затем просто сделать $basic = new Basic('xxxxxxx', 'xxxxxxxxxxxx'); в модели?

0 голосов
/ 26 мая 2020

Ну, я чувствую себя глупо. Я вернул git, чтобы удалить пакет Laravel, который я установил, но не хотел, и я вернулся слишком далеко и удалил также установку клиента Nexmo, что, очевидно, объясняет, почему класс не был найден. Я переустановил пакет Nexmo и ... вуаля! Оно работает. Прошу прощения за трату времени людей.

0 голосов
/ 26 мая 2020

Если перед пространством имен нет \, компилятор начнет поиск из текущего пространства имен.

Итак, либо добавьте \ перед именем класса, либо включите пространство имен в верхней части файла PHP.

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

Причина, по которой это сработало в вашем контроллере, вероятно, заключается в том, что у вас есть включение для Nexmo в верхней части файла PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...