我目前在我的应用目录中为我的所有图书馆添加了一个新文件夹'。我一直收到一个错误,即没有找到班级,这就是我的工作:
我已将其添加到autoload值中的composer.json文件中:
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php",
"app/services",
"app/facades",
"app/libraries" --> here
]
},
将其添加到classloader中的global.php文件中:
ClassLoader::addDirectories(array(
app_path().'/commands',
app_path().'/controllers',
app_path().'/models',
app_path().'/database/seeds',
app_path().'/libraries', --> here
));
在app.php中为它创建了一个别名:
'aliases' => array(
'App' => 'Illuminate\Support\Facades\App',
'Session' => 'Illuminate\Support\Facades\Session',
...
'SimpleImage' => 'App\Libraries\abeautifulsite\SimpleImage', --> here
),
在我的控制器中调用了这个类:
$img = new SimpleImage($file);
我一直收到的错误是找不到该类。我错过了什么?
ErrorException (E_UNKNOWN)
Class 'App\Libraries\abeautifulsite\SimpleImage' not found
(PS。我在终端做了composer dump-autoload)
答案 0 :(得分:5)
在Laravel项目中添加自定义文件夹的最佳方法是使用PSR-4
。
首先在/app
中创建自定义目录,例如:
/app/YourName/libraries
现在打开composer.json
并在autoload -> classmap
添加psr-4
结构之后:
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php",
"app/services",
"app/facades"
],
"psr-4": {
"YourName\\": "app/YourName"
}
},
请注意,我删除了您的/app/libraries
行,然后运行:
composer dump-autoload
这样,您将在 YourName 文件夹中添加的所有文件夹都将被加载。
例如:
app/ChristianGiupponi/libraries
和
"psr-4": {
"ChristianGiupponi\\": "app/ChristianGiupponi"
}