В Laravel 5, «Заявление» представляет собой набор PHP файлов в едином пространстве имен, сохраняются в папке app/
По умолчанию, и в большинстве из Laravel 5 образец кода из документации, это пространство имен есть App\
. Например, один контроллер в вашем приложении может выглядеть так.
namespace App\Http\Controller;
class MyController
{
//...
}
Когда Laravel генерирует код (то есть, когда вы используете команду make:request
), он должен знать, что это пространство имен приложение (это можно изменить пространство имен с помощью команды artisan app:name
). По какой-то причине в вашей системе Laravel 5 не может определить пространство имен.
Если посмотреть на участке Laravel 5 основного кода, который определяет в пространстве имен
#File: vendor/laravel/framework/src/Illuminate/Console/AppNamespaceDetectorTrait.php
protected function getAppNamespace()
{
$composer = json_decode(file_get_contents(base_path().'/composer.json'), true);
foreach ((array) data_get($composer, 'autoload.psr-4') as $namespace => $path)
{
foreach ((array) $path as $pathChoice)
{
if (realpath(app_path()) == realpath(base_path().'/'.$pathChoice)) return $namespace;
}
}
throw new RuntimeException("Unable to detect application namespace.");
}
Вы увидите, что Laravel определяет пространство имен, глядя на ваш файл composer.json
и ищет thefirst действительного psr-4
пространства имен.
Моя догадка файл composer.json
отсутствует в пространстве имен
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
Добавим, что обратно, и вы будете хорошо идти.