我正在使用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,
这是我的CrudGeneratorServiceProvide.php
的内容
namespace yudijohn\CrudGenerator;
use Illuminate\Support\ServiceProvider;
class CrudGeneratorServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
//
$this->commands(
'yudijohn\CrudGenerator\Commands\CrudCommand',
'yudijohn\CrudGenerator\Commands\CrudControllerCommand',
'yudijohn\CrudGenerator\Commands\CrudModelCommand',
'yudijohn\CrudGenerator\Commands\CrudMigrationCommand',
'yudijohn\CrudGenerator\Commands\CrudViewCommand'
);
}
}
但是当我尝试php artisan serve时,会出现此错误
[Symfony\Component\Debug\Exception\FatalErrorException]
Class 'yudijohn\CrudGenerator\CrudGeneratorServiceProvider' not found
我不知道为什么找不到课程?我该怎么做才能解决这个错误? 请有人帮帮我
这是PackageServiceProvider.php
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());
}
}
}
答案 0 :(得分:2)
您要添加
"yudijohn\\CrudGenerator\\": "packages/yudijohn/crud-generator/src"
到项目根目录的composer.json
,而不是您刚刚创建的包。它应该在"App\\": "app/"
条目下方。
之后,运行composer dump-autoload
将其添加到作曲家的自动加载课程中。
我也不相信你需要PackageServiceProvider.php
,当你使用作曲家时添加另一个自动加载器似乎是多余的。
另外请确保您的文件名和类名相同,当您的班级名称为CrudGeneratorServiceProvide.php
时提及CrudGeneratorServiceProvider
(请注意类名末尾的r)
这是进一步研究的良好资源:https://github.com/jaiwalker/setup-laravel5-package