Я создал папку библиотеки в папке приложения, чтобы добавить библиотеки приложений. Я обновил файл конфигурации приложения и composer.json, чтобы автозагрузить эту папку, но когда я запускаю команду composer dump-autoload
я получаю следующую ошибку:
{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Class 'App\\Libraries\\Search\\SearchServiceProvider' not found","file":"D:\\Users\\Miguel Borges\\Documents\\Trabalhos\\Tese\\portal\\bootstrap\\compiled.php","line":4130}}PHP Fatal error: Class 'App\Libraries\Search\SearchServiceProvider' not found in D:\Users\Miguel Borges\Documents\Trabalhos\Tese\portal\bootstrap\compiled.php on line 4130 [Finished in 1.1s with exit code 255]
Дерево папок моего приложения:
app | ... + libraries | + search | | - Search.php | | - SearchFacade.php | | - SearchServiceProvider.php | + lib2 | | - ... | + lib3 | | - ... | | - Theme.php | - ... - filters.php - routes.php
SearchServiceProvider.php
namespace App\Libraries\Search; use Illuminate\Support\ServiceProvider; class SearchServiceProvider extends ServiceProvider { /** * Register the service provider. * * @return void */ public function register() { $this->app['search'] = $this->app->share(function($app) { return new Search; }); } }
composer.json
"autoload": { "classmap": [ "app/commands", "app/controllers", "app/models", "app/libraries", "app/database/migrations", "app/database/seeds", "app/tests/TestCase.php" ] // , // "psr-0": { // "app": "app/libraries" // } },
В принципе, мне нужно автозагрузить все библиотеки в папке «library».
Вы должны создать пространство имен верхнего уровня для своего приложения.
Затем поместите все библиотеки, которые вы кодируете под этим пространством имен. Примечание. Любые сторонние библиотеки должны (надеюсь) быть установлены через Composer и, следовательно, иметь свою собственную установку пространства имен / автозагрузки.
Ваша структура каталогов будет следующей:
libraries Myapp Search (note directory is capitalized) Search.php SearchFacade.php SearchServiceProvider.php AnotherLib
Затем ваши классы будут следовать этому пространству имен:
Файл: Myapp/Search/Search.php
:
<?php namespace Myapp\Search; class Search { ... }
И, наконец, ваша установка для автоматической загрузки:
"autoload": { "classmap": [ "app/commands", "app/controllers", "app/models", "app/libraries", "app/database/migrations", "app/database/seeds", "app/tests/TestCase.php" ] , "psr-0": { "Myapp": "app/libraries" } },