未找到Laravel 5.2自定义提供程序
我正在使用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
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());
}
}
}