Edited at

Laravelで名前空間を指定してオートロードされなかったら見る場所。

More than 3 years have passed since last update.


autoload_classmap.php

Laravelで名前空間指定したはいいがClass Not Foundが出て分からなくなった方は、一度vendor/composer/autoload_classmap.phpというファイルを見てみるといいと思います。

オートロードするファイルの配列が作られています。

キーがnamespaceで値がパスになっております。


vendor/composer/autoload_classmap.php

<?php

// autoload_classmap.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
'BaseController' => $baseDir . '/app/controllers/BaseController.php',
'DatabaseSeeder' => $baseDir . '/app/database/seeds/DatabaseSeeder.php',
'HomeController' => $baseDir . '/app/controllers/HomeController.php',
'LaravelTest\\Controllers\\UserController' => $baseDir . '/app/controllers/UserController.php',
'LaravelTest\\Models\\User' => $baseDir . '/app/models/User.php',
'TestCase' => $baseDir . '/app/tests/TestCase.php'
);



dump-autoload

名前空間を新たに記述した時はコマンドを叩いてautoload_classmap.phpを更新します。

% composer dump-autoload


composer.json

オートロードはcomposer.jsonのautoloadに記述してあります。


composer.json

    "autoload": {

"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
},


Class '\User' not found

まじめに名前空間を指定しようとしてデフォルトで存在しているModels/User.phpなんかに名前空間指定するといろんなところでエラーになると思います。

コントローラーはすぐ気づきやすいのですがconfig/auth.phpは気づかず少しはまりました。


app/config/auth.php

'model' => 'User', // 'model' => 'App\Models\User',


ええ、私はモダンな方のPHPerに近づきたいがために名前空間に躍起なったのでありました。


基本クラスのエイリアス。

config/app.phpに書いてあるものは

use Input;

use Validator;

use DB;

と短く書けばいいのでここもさらっと見ておいてもいいかも。


app/config/app.php

    'aliases' => array(

'App' => 'Illuminate\Support\Facades\App',
'Artisan' => 'Illuminate\Support\Facades\Artisan',
'Auth' => 'Illuminate\Support\Facades\Auth',
'Blade' => 'Illuminate\Support\Facades\Blade',
'Cache' => 'Illuminate\Support\Facades\Cache',
'ClassLoader' => 'Illuminate\Support\ClassLoader',
'Config' => 'Illuminate\Support\Facades\Config',
'Controller' => 'Illuminate\Routing\Controller',
'Cookie' => 'Illuminate\Support\Facades\Cookie',
'Crypt' => 'Illuminate\Support\Facades\Crypt',
'DB' => 'Illuminate\Support\Facades\DB',
'Eloquent' => 'Illuminate\Database\Eloquent\Model',
'Event' => 'Illuminate\Support\Facades\Event',
'File' => 'Illuminate\Support\Facades\File',
'Form' => 'Illuminate\Support\Facades\Form',
'Hash' => 'Illuminate\Support\Facades\Hash',
'HTML' => 'Illuminate\Support\Facades\HTML',
'Input' => 'Illuminate\Support\Facades\Input',
'Lang' => 'Illuminate\Support\Facades\Lang',
'Log' => 'Illuminate\Support\Facades\Log',
'Mail' => 'Illuminate\Support\Facades\Mail',
'Paginator' => 'Illuminate\Support\Facades\Paginator',
'Password' => 'Illuminate\Support\Facades\Password',
'Queue' => 'Illuminate\Support\Facades\Queue',
'Redirect' => 'Illuminate\Support\Facades\Redirect',
'Redis' => 'Illuminate\Support\Facades\Redis',
'Request' => 'Illuminate\Support\Facades\Request',
'Response' => 'Illuminate\Support\Facades\Response',
'Route' => 'Illuminate\Support\Facades\Route',
'Schema' => 'Illuminate\Support\Facades\Schema',
'Seeder' => 'Illuminate\Database\Seeder',
'Session' => 'Illuminate\Support\Facades\Session',
'SoftDeletingTrait' => 'Illuminate\Database\Eloquent\SoftDeletingTrait',
'SSH' => 'Illuminate\Support\Facades\SSH',
'Str' => 'Illuminate\Support\Str',
'URL' => 'Illuminate\Support\Facades\URL',
'Validator' => 'Illuminate\Support\Facades\Validator',
'View' => 'Illuminate\Support\Facades\View',

),