PHP7 "класс не найден" ... почему? - PullRequest
0 голосов
/ 03 марта 2020

У меня есть это:

В app \ Html \ Controllers \ Mail \ MailerQueueController. php:

 <?php
 namespace App\Http\Controllers\Mailer;
 use App\Services\MailerService;
 $emails = \App\Services\JFIEmail::Query();    <-- class not found 

В app \ Services \ MailerService. php:

 <?php
 namespace App\Services;
 class JFIEmail extends Email { 

Броски: class App\Services\JFIEmail not found.

Почему?

Ответы [ 2 ]

4 голосов
/ 03 марта 2020

Если ваш класс App\Services\JFIEmail, Composer попытается загрузить app/Services/JFIEmail.php.

Если ваш класс определен в app/Services/MailerService.php, это не сработает.

0 голосов
/ 04 марта 2020

С любезной помощью @ceejayoz я решил проблему следующим образом:

Вместо нескольких определений class в одном файле, создайте подкаталог app\Services\MailerService и в этом месте каталога JFIMail.php и MailerService.php,, каждый из которых содержит одно определение класса, соответствующее имени файла.

Теперь утверждение из исходного поста гласит:

 $emails = \App\Services\MailerService\JFIEmail::query();

А операторы use выглядят так это:

 use app\Services\MailerService\JFIEmail;
 use app\Services\MailerService\MailerService;

Интересно, что , и хотя имя root -директории равно app, а не App, PHP специально отвергло высказывание app\Services\MailerService\JFIEmail! Он хотел, чтобы имя namespace точно совпадало. (Однако: имена всех внутренних папок точно совпадают с регистром, и я не собираюсь подробно останавливаться на этом вопросе.)

Еще раз, спасибо всем за помощь в решении этой проблемы.

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