Laravel:从新的自定义目录加载自定义类

use*_*011 2 laravel-4

我目前在我的app目录中为所有"库"添加了一个新文件夹.我一直收到一个错误,即找不到这个课程,这就是我的工作:

我已将其添加到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
    ]
},
Run Code Online (Sandbox Code Playgroud)

将它添加到类加载器中的global.php文件中:

ClassLoader::addDirectories(array(

    app_path().'/commands',
    app_path().'/controllers',
    app_path().'/models',
    app_path().'/database/seeds',
    app_path().'/libraries', --> here

));
Run Code Online (Sandbox Code Playgroud)

在app.php中为它创建了一个别名:

'aliases' => array(

    'App'               => 'Illuminate\Support\Facades\App',
    'Session'           => 'Illuminate\Support\Facades\Session',
    ...
    'SimpleImage'       => 'App\Libraries\abeautifulsite\SimpleImage', --> here

),
Run Code Online (Sandbox Code Playgroud)

并在我的控制器中调用该类:

$img = new SimpleImage($file);
Run Code Online (Sandbox Code Playgroud)

我一直收到的错误是找不到类.我错过了什么?

ErrorException (E_UNKNOWN) 
Class 'App\Libraries\abeautifulsite\SimpleImage' not found
Run Code Online (Sandbox Code Playgroud)

(PS.我在终端做了composer dump-autoload)

Chr*_*oni 5

在Laravel项目中添加自定义文件夹的最佳方法是使用PSR-4.

首先在中创建自定义目录/app,例如:

/app/YourName/libraries
Run Code Online (Sandbox Code Playgroud)

现在打开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"
    }
},
Run Code Online (Sandbox Code Playgroud)

请注意,我删除了您的/app/libraries行,然后运行:

composer dump-autoload
Run Code Online (Sandbox Code Playgroud)

这样,您将在YourName文件夹中添加的所有文件夹都将被加载.

例如:

app/ChristianGiupponi/libraries
Run Code Online (Sandbox Code Playgroud)

"psr-4": {
    "ChristianGiupponi\\": "app/ChristianGiupponi"
 }
Run Code Online (Sandbox Code Playgroud)