php Laravel Class 'App\Modules\ServiceProvider'未找到?

sxissh06  于 2023-05-12  发布在  PHP
关注(0)|答案(8)|浏览(124)

大家好,我是Laravel框架的新手。
我在app文件夹中创建模块目录。
然后我也创建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;
}

}

然后在modules目录下创建一个新的points目录。
并在points目录下创建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 entery。

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

然后也运行此命令。

composer dump-autoload

但之后就不是工作了
我还在app.php中注册了ServiceProvide,如。

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

请告诉我哪里做错了。
谢谢。

eqfvzcg8

eqfvzcg81#

我试着运行你的代码,一切都很好。
这是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'
  ),

app/modules/points/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");
  }

}

app/modules/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;
  }

}
gcuhipw9

gcuhipw92#

我也有同样的问题。
问题出在文件里:./bootstrap/cache/config.php
我已经删除了它,一切都开始工作:rm ./bootstrap/cache/config.php
我的基础设施位于docker中,我在PHP容器中运行了该命令。

bq8i3lrv

bq8i3lrv3#

将以下内容添加到composer.json自动加载部分:

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

然后是composer dump-autoload

w7t8yxp5

w7t8yxp54#

我在创建包方面是个新手。第一次创建以下结构后,我把它放在Vendor文件夹中。

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

但很快我就意识到这是没有意义的,因为Laravel不会自动加载所有的包,除非你注册它。所以我将文件夹移动到/app/vendor(新文件夹)。
然后按照Andreyco的建议通知自动加载路径

"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覆盖的文件夹中设置你的包
  • 在composer中注册自动加载
  • composer 转储自动加载
  • 将提供程序添加到配置
  • 现在回到编码
idfiyjo8

idfiyjo85#

在项目根路径中执行命令

composer dump-autoload

cbeh67ev

cbeh67ev6#

我最初的想法是 composer 自动加载以及,但它没有感觉很Laravel 5 ish给我。L5大量使用服务提供者,他们引导你的应用程序。
首先,我在应用程序目录中创建了一个名为Helpers的文件夹。然后,在Helpers文件夹中,我添加了我想要添加的函数的文件。拥有一个包含多个文件的文件夹可以让我们避免一个大文件变得太长和难以管理。
接下来,我通过运行artisan命令创建了一个HelperServiceProvider.php:
artisan make:provider HelperServiceProvider或php artisan make:provider HelperServiceProvider在register方法中,我添加了以下代码片段

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

最后,在providers数组中的config/app.php中注册服务提供程序
'providers' => [ 'App\Providers\HelperServiceProvider',]现在您的Helpers目录中的任何文件都已加载,并且可以使用。
2016-02-22最新动态
这里有很多好的选择,但是如果我的答案对你有用,我继续做了一个包,以这种方式包含助手。你可以使用这个包来获得灵感,也可以随意下载Composer。它有一些我经常使用的内置助手(但默认情况下都是不活动的),并允许您使用简单的Artisan生成器制作自己的自定义助手。它还解决了一个响应者使用Map器的建议,并允许您显式定义要加载的自定义helper,或者默认情况下,自动加载helper目录中的所有PHP文件。反馈和公关非常感谢!
composer 需要browner 12/helpers

afdcj2ne

afdcj2ne7#

将此行添加到AgentServiceProvider.php的顶部
使用代理;
例如:

namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Agent;

Source

gxwragnw

gxwragnw8#

找不到Laravel类'App\Modules\ServiceProvider'

"autoload": {
    "psr-4": {
        "App\\": "app/", 
        "Modules\\": "Modules/"
    }
}

需要添加“模块\”:“Modules/”psr-4 part in your root composer.json file

相关问题