In laravel 5, una "applicazione" è una raccolta di file PHP sotto un unico spazio dei nomi, memorizzato nella cartella app/
Per impostazione predefinita, e nella maggior parte del codice di esempio laravel 5 dalla documentazione, questo spazio dei nomi è App\
. Ad esempio, un controller nell'applicazione potrebbe apparire come questo.
namespace App\Http\Controller;
class MyController
{
//...
}
Quando laravel genera codice (vale a dire quando si utilizza il comando make:request
), ha bisogno di sapere che cosa questo namespace applicazione è (è possibile cambiare lo spazio dei nomi con il comando artisan app:name
). Per qualche ragione, nel tuo sistema, Laravel 5 non può rilevare lo spazio dei nomi.
Se guardate la sezione del laravel 5 codice di base che individua lo spazio dei nomi
#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.");
}
Vedrai che laravel rileva lo spazio dei nomi, cercando in file composer.json
, e alla ricerca di thefirst psr-4
spazio dei nomi validi.
La mia ipotesi è il file composer.json
manca lo spazio dei nomi
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
aggiungere che indietro, e sarete pronti per partire.
fonte
2015-04-29 23:19:25