Laravel Class 'App \ Modules \ ServiceProvider' не найден?

Привет друзья Я новичок в Laravel framework.

Я создаю каталог модулей в папке приложения.

то я также создаю файл ServiceProvider.php в каталоге модулей.

моя файловая структура.

app\modules\ServiceProvider.php 

Это код ServiceProvider.php.

 <?php namespace App\Modules; abstract class ServiceProvider extends \Illuminate\Support\ServiceProvider { public function boot() { if ($module = $this->getModule(func_get_args())) { $this->package("app/" . $module, $module, app_path() . "/modules/" . $module); } } public function register() { if ($module = $this->getModule(func_get_args())) { $this->app["config"]->package("app/" . $module, app_path() . "/modules/" . $module . "/config"); // Add routes $routes = app_path() . "/modules/" . $module . "/routes.php"; if (file_exists($routes)) require $routes; } } public function getModule($args) { $module = (isset($args[0]) and is_string($args[0])) ? $args[0] : null; return $module; } } 

Затем я создаю новый каталог точек в каталоге модулей.

а также создать файл ServiceProvider.php в каталоге точек.

Это код файла ServiceProvider.php.

 <?php namespace App\Modules\Points; class ServiceProvider extends \App\Modules\ServiceProvider { public function register() { parent::register("points"); } public function boot() { parent::boot("points"); } } 

Тогда теперь я пытаюсь загрузить проект, я получил ошибку, как.

 Class 'App\Modules\ServiceProvider' not found Symfony\Component\Debug\Exception\FatalErrorException …/app/modules/points/ServiceProvider.php5 

Я также добавляю автозагрузку в файл composer.json, например.

 "autoload": { "classmap": [ "app/modules" ] }, 

Затем запустите эту команду.

 composer dump-autoload 

но потом не работает.

Я также регистрирую свой ServiceProvide в app.php как.

 'providers' => array( 'App\Modules\Points\ServiceProvider' ), 

сообщите, где я делаю ошибку.

Спасибо.

Solutions Collecting From Web of "Laravel Class 'App \ Modules \ ServiceProvider' не найден?"

Я пытаюсь запустить ваш код, и все отлично работает.

Это новая установка Laravel 4.1

Обвините: проверьте свой vendor/composer/autoload_classmap.php

 <?php // autoload_classmap.php @generated by Composer $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( 'App\\Modules\\Points\\ServiceProvider' => $baseDir . '/app/modules/points/ServiceProvider.php', 'App\\Modules\\ServiceProvider' => $baseDir . '/app/modules/ServiceProvider.php', 'BaseController' => $baseDir . '/app/controllers/BaseController.php', 'DatabaseSeeder' => $baseDir . '/app/database/seeds/DatabaseSeeder.php', 'HomeController' => $baseDir . '/app/controllers/HomeController.php', 'IlluminateQueueClosure' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/IlluminateQueueClosure.php', 'SessionHandlerInterface' => $vendorDir . '/symfony/http-foundation/Symfony/Component/HttpFoundation/Resources/stubs/SessionHandlerInterface.php', 'TestCase' => $baseDir . '/app/tests/TestCase.php', 'User' => $baseDir . '/app/models/User.php', ); 

composer.json

 { "name": "laravel/laravel", "description": "The Laravel Framework.", "keywords": ["framework", "laravel"], "license": "MIT", "require": { "laravel/framework": "4.1.*" }, "autoload": { "classmap": [ "app/commands", "app/controllers", "app/models", "app/modules", "app/database/migrations", "app/database/seeds", "app/tests/TestCase.php" ] }, "scripts": { "post-install-cmd": [ "php artisan clear-compiled", "php artisan optimize" ], "post-update-cmd": [ "php artisan clear-compiled", "php artisan optimize" ], "post-create-project-cmd": [ "php artisan key:generate" ] }, "config": { "preferred-install": "dist" }, "minimum-stability": "stable" } 

app.php

 <?php 'providers' => array( 'Illuminate\Foundation\Providers\ArtisanServiceProvider', 'Illuminate\Auth\AuthServiceProvider', 'Illuminate\Cache\CacheServiceProvider', 'Illuminate\Session\CommandsServiceProvider', 'Illuminate\Foundation\Providers\ConsoleSupportServiceProvider', 'Illuminate\Routing\ControllerServiceProvider', 'Illuminate\Cookie\CookieServiceProvider', 'Illuminate\Database\DatabaseServiceProvider', 'Illuminate\Encryption\EncryptionServiceProvider', 'Illuminate\Filesystem\FilesystemServiceProvider', 'Illuminate\Hashing\HashServiceProvider', 'Illuminate\Html\HtmlServiceProvider', 'Illuminate\Log\LogServiceProvider', 'Illuminate\Mail\MailServiceProvider', 'Illuminate\Database\MigrationServiceProvider', 'Illuminate\Pagination\PaginationServiceProvider', 'Illuminate\Queue\QueueServiceProvider', 'Illuminate\Redis\RedisServiceProvider', 'Illuminate\Remote\RemoteServiceProvider', 'Illuminate\Auth\Reminders\ReminderServiceProvider', 'Illuminate\Database\SeedServiceProvider', 'Illuminate\Session\SessionServiceProvider', 'Illuminate\Translation\TranslationServiceProvider', 'Illuminate\Validation\ValidationServiceProvider', 'Illuminate\View\ViewServiceProvider', 'Illuminate\Workbench\WorkbenchServiceProvider', 'App\Modules\Points\ServiceProvider' ), 

приложение / модули / точки / ServiceProvider.php

 <?php namespace App\Modules\Points; class ServiceProvider extends \App\Modules\ServiceProvider { public function register() { parent::register("points"); } public function boot() { parent::boot("points"); } } 

Приложение / модули / ServiceProvider.php

 <?php namespace App\Modules; abstract class ServiceProvider extends \Illuminate\Support\ServiceProvider { public function boot() { if ($module = $this->getModule(func_get_args())) { $this->package("app/" . $module, $module, app_path() . "/modules/" . $module); } } public function register() { if ($module = $this->getModule(func_get_args())) { $this->app["config"]->package("app/" . $module, app_path() . "/modules/" . $module . "/config"); // Add routes $routes = app_path() . "/modules/" . $module . "/routes.php"; if (file_exists($routes)) require $routes; } } public function getModule($args) { $module = (isset($args[0]) and is_string($args[0])) ? $args[0] : null; return $module; } } 

Добавьте это в раздел автозагрузки composer.json :

 "psr-4": { "App\\": "app/" } 

а затем composer dump-autoload

Я довольно новичок в создании пакета. В первый раз после создания следующей структуры я поместил ее в папку Vendor.

 qplot environment-color src config QPlot EnvironmentColor ColorServiceProvider.php EnvironmentColor.php tests 

Но вскоре я понял, что это не имеет смысла, поскольку Laravel не будет автоматически загружать все пакеты для вас, если вы не зарегистрировали его. Поэтому я переместил папку в / app / vendor (новая папка).

А затем, следуя совету Андрея, уведомить автозагрузку

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

И затем, когда я запускаю php artisan dump-autoload и откройте vendor/composer/autoload_classmap.php , все новые классы под QPlot зарегистрированы 🙂

Теперь, когда я вернусь, чтобы добавить поставщика в Laravel /app/config/app.php ,

 'providers' => array( 'QPlot\EnvironmentColor\ColorServiceProvider' 

Итак, шаги

  • настройте свой пакет в папке, где ваш git будет охватывать
  • зарегистрировать автозагрузку в композиторе
  • компоновщик-автозагрузка
  • добавить поставщика в конфигурацию
  • вернемся к кодированию

Выполните команду в корневом пути проекта

компоновщик-автозагрузка

моя первоначальная мысль тоже была автозагрузкой композитора, но мне это не очень понравилось Laravel 5ish. L5 активно использует сервис-провайдеров, это то, что загружает ваше приложение.

Для начала я создал папку в моем каталоге приложений под названием Helpers. Затем в папке «Помощники» я добавил файлы для функций, которые я хотел добавить. Наличие папки с несколькими файлами позволяет избежать того, что один большой файл становится слишком длинным и неуправляемым.

Затем я создал HelperServiceProvider.php, выполнив команду artisan:

artisan make: поставщик HelperServiceProvider или php artisan make: поставщик HelperServiceProvider В методе register я добавил этот фрагмент

 public function register() { foreach (glob(app_path().'/Helpers/*.php') as $filename){ require_once($filename); } } 

наконец, зарегистрируйте поставщика услуг в вашем config / app.php в массиве поставщиков

'providers' => ['App \ Providers \ HelperServiceProvider',] теперь любой файл в вашем справочном каталоге загружается и готов к использованию.

ОБНОВЛЕНИЕ 2016-02-22

Здесь есть много хороших вариантов, но если мой ответ работает на вас, я пошел вперед и сделал пакет для включения помощников таким образом. Вы можете использовать пакет для вдохновения или не стесняйтесь загружать его вместе с Composer. В нем есть встроенные помощники, которые я часто использую (но все они неактивны по умолчанию) и позволяет создавать собственные пользовательские помощники с простым генератором Artisan. Он также учитывает предположение, что один ответчик имел использование mapper и позволяет вам явно определять пользовательские помощники для загрузки или по умолчанию автоматически загружать все PHP-файлы в ваш справочный каталог. Обратная связь и PR очень ценятся!

композитору требуется browner12 / helpers