Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未找到Laravel 5.2自定义提供程序_Laravel_Packages_Provider - Fatal编程技术网

未找到Laravel 5.2自定义提供程序

未找到Laravel 5.2自定义提供程序,laravel,packages,provider,Laravel,Packages,Provider,我正在使用laravel 5.2并尝试创建我自己的包,因此我创建了我的包文件夹,这是我的目录: root -packages --yudijohn ---composer.json ---crud-generator ----src -----CrudGeneratorServiceProvider.php 这是我的composer.json的内容,我使用composer init { "name": "yudijohn/crud-generator", "descriptio

我正在使用laravel 5.2并尝试创建我自己的包,因此我创建了我的包文件夹,这是我的目录:

root
-packages
--yudijohn
---composer.json
---crud-generator
----src
-----CrudGeneratorServiceProvider.php
这是我的composer.json的内容,我使用composer init

{
    "name": "yudijohn/crud-generator",
    "description": "Laravel 5 Crud Generator",
    "require": {
        "php": ">=5.5.9",
        "laravelcollective/html": "5.1.*"
    },
    "license": "MIT",
    "authors": [
        {
            "name": "Yudi Yohanes Septian Gotama",
            "email": "yudijohn.sg@gmail.com"
        }
    ],
    "minimum-stability": "dev",
    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "yudijohn\\CrudGenerator\\": "packages/yudijohn/crud-generator/src"
        }
    }
}
并在app/Provide.php中添加一个提供者设置

App\Providers\PackageServiceProvider::class,
yudijohn\CrudGenerator\CrudGeneratorServiceProvider::class,
这是我的CrudGeneratorServiceProvider.php的内容

App\Providers\PackageServiceProvider::class,
yudijohn\CrudGenerator\CrudGeneratorServiceProvider::class,
但当我尝试使用php artisan服务时,出现了这个错误

[Symfony\Component\Debug\Exception\FatalErrorException]                
Class 'yudijohn\CrudGenerator\CrudGeneratorServiceProvider' not found
我不知道为什么找不到这个班?我必须做些什么来解决这个错误? 请有人帮帮我

这是PackageServiceProvider.php

namespace-App\Providers;
使用Illumb\Support\ServiceProvider;
使用Symfony\Component\Finder\Finder;
使用\文件系统\文件系统;
类PackageServiceProvider扩展了ServiceProvider{
/**
*引导应用程序服务。
*
*@返回无效
*/
公共函数boot()
{
$this->loadAutoloader(基本路径(“包”);
}
/**
*注册应用程序服务。
*
*@返回无效
*/
公共职能登记册()
{
//
}
/**
*需要composer的自动加载文件包。
*
*@返回无效
**/
受保护的函数loadAutoloader($path)
{
$finder=新的finder;
$files=新文件系统;
$autoloads=$finder->in($path)->files()->name('autoload.php')->depth('p>要添加的
“yudijohn\\CrudGenerator\\”:“packages/yudijohn/crud generator/src”
composer.json
项目根目录,而不是您刚制作的包。它应该位于
的“App\\”:“App/”
条目的正下方

之后,运行
composer dump autoload
将其添加到composer的自动加载类中

我也不认为您需要
PackageServiceProvider.php
,在使用composer时添加另一个自动加载器似乎是多余的

还要确保文件名和类名相同,您提到的
CrudGeneratorServiceProvider.php
,而类名是
CrudGeneratorServiceProvider
(注意类名末尾的r)


这里有一个很好的资源可供进一步研究:

你有没有让composer dump autoload
?是的,在创建所有文件后,我会让composer dump autoload在根目录下,但仍然是errorkhm,非常奇怪,尝试在路径的末尾添加尾部斜杠。我在composer上的路径上添加斜杠,仍然是找不到的错误,这会发生什么?这是错误详细信息PHP致命错误:在线/home/yudi/Documents/dev/vendor/laravel/framework/src/illighte/Foundation/ProviderRepository.PHP中找不到类“yudijohn\CrudGenerator\CrudGeneratorServiceProvider”146@xAoc我添加了我的PackageServiceProvider.php内容,可能我错了,谢谢兄弟,我的问题是在我的p项目根不在我的包中!
namespace App\Providers;

use Illuminate\Support\ServiceProvider;

use Symfony\Component\Finder\Finder;

use Illuminate\Filesystem\Filesystem;

class PackageServiceProvider extends ServiceProvider {

    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
            $this->loadAutoloader(base_path('packages'));
    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        //
        }

        /**
        * Require composer's autoload file the packages.
        *
        * @return void
        **/
        protected function loadAutoloader($path)
        {
            $finder = new Finder;
            $files = new Filesystem;

            $autoloads = $finder->in($path)->files()->name('autoload.php')->depth('<= 3')->followLinks();

        foreach ($autoloads as $file)
        {
            $files->requireOnce($file->getRealPath());
        }
        }

}