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',
),