ipunkt / laravel-package-manager
laravel包管理器
Requires
- php: >=7.0.0
- illuminate/routing: *
- illuminate/support: *
README
简介
包管理器有助于减少包创建时间。因此,它支持一些基本的服务提供商,用于laravel包。
此包与laravel插件种子包配合良好。
只需使用composer create-package ipunkt/laravel-package YOUR-PACKAGE-NAME
创建一个新的插件,您就可以立即使用所有包管理器支持的功能。
安装
使用composer require ipunkt/laravel-package-manager:^1.0
将此包作为依赖项添加
用法
我们建议使用扩展Illuminate\Support\AggregateServiceProvider
的Package Service Provider,并将所有与包相关的提供者作为属性注册,如下所示
<?php namespace MyPackage\Providers; use Illuminate\Support\AggregateServiceProvider; class MyPackageServiceProvider extends AggregateServiceProvider { /** * The provider class names. * * @var array */ protected $providers = [ ConfigProvider::class, BindingsProvider::class, ArtisanProvider::class, MigrationsProvider::class, TranslationsProvider::class, BladeProvider::class, RoutesProvider::class, ViewProvider::class, EventsProvider::class, ]; }
然后在您的composer.json
中,仅自动注册聚合服务提供者,如下所示
{ "extra": { "laravel": { "providers": [ "MyPackage\\Providers\\MyPackageServiceProvider" ] } } }
包含的基础服务提供商
我们包括各种服务提供商,以满足最常见的包需求。因此,您可以简单地使用/扩展它们,并将其添加到包服务提供者中。
包配置
如果您想注册包配置,您必须扩展ConfigurationServiceProvider
。
首先,请将受保护的$packagePath
添加到您扩展的服务提供者类中,并为包根文件夹提供一个值,如下所示:protected $packagePath = __DIR__ . '/../../';
。这是必要的,以便将文件相对于包根进行标记。
您必须在属性$configurationFiles
中添加您的配置文件。逐个添加为数组项。如果您想为配置提供别名,请设置它为数组键。例如
在您的包中有一个config/config.php
,并且您想将其发布并合并为my-package
,您必须设置如下所示
'my-package' => 'config/config.php'
然后您可以通过使用config('my-package.)
来获取配置值。
路由
为了提供路由,您必须扩展RouteServiceProvider
。
首先,请将受保护的$packagePath
添加到您扩展的服务提供者类中,并为包根文件夹提供一个值,如下所示:protected $packagePath = __DIR__ . '/../../';
。这是必要的,以便将文件相对于包根进行标记。
只需将$routesNamespace
、$routesMiddleware
和$routesFile
设置为您所需的内容,您就可以开始了。对于注册各种路由,您应该为每种类型的路由文件(api、web等)有一个提供者。
视图/模板
我们提供了ViewServiceProvider
以供扩展。
首先,请将受保护的$packagePath
添加到您扩展的服务提供者类中,并为包根文件夹提供一个值,如下所示:protected $packagePath = __DIR__ . '/../../';
。这是必要的,以便将文件相对于包根进行标记。
您必须将$namespace
设置为基于包的标识符。默认情况下,$templatesFolder
设置为resources/views
,您可以覆盖它。
数据库迁移
我们提供了MigrationServiceProvider
以从包中提供数据库迁移文件。
首先,请将受保护的$packagePath
添加到您扩展的服务提供者类中,并为包根文件夹提供一个值,如下所示:protected $packagePath = __DIR__ . '/../../';
。这是必要的,以便将文件相对于包根进行标记。
您必须将$migrationsFolder
设置为您的包迁移。
翻译
我们提供了TranslationServiceProvider
以供扩展。
首先,请将受保护的$packagePath
添加到您扩展的服务提供者类中,并为包根文件夹提供一个值,如下所示:protected $packagePath = __DIR__ . '/../../';
。这是必要的,以便将文件相对于包根进行标记。
您必须将$namespace
设置为基于包的标识符。默认情况下,$translationsFolder
设置为resources/lang
,您可以覆盖它。
对于新实现的json文件方式,我们也支持$useJson
标志。当为true
时,给定的文件必须是json格式。
Artisan命令
为了注册Artisan控制台命令,我们提供了ArtisanServiceProvider
。
您必须使用您的命令填充$commands
数组。如果您提供了一个键,则该键将是laravel的IoC容器中注册的键。值应该是命令类名,例如SuperCommand::class
或字符串,例如SuperCommand
,它会被解析为在服务提供者中查找方法registerSuperCommand
(至少是受保护的,以便被调用)。因此,您可以通过使用单独的方法来注册更复杂的命令。
默认情况下,Artisan命令仅在控制台运行时注册。如果您想改变这种行为,您可以覆盖$registerOnlyForConsole
的值来实现这一点。
别名
我们提供了一个AliasServiceProvider
来手动注册所有别名。但是,您应该通过新的包发现提供别名。
{ "extra": { "laravel": { "providers": [ "YourProvider" ], "aliases": { "Alias": "Path\\To\\Facade" } } }, }
常见解析
视图、配置、翻译等的命名空间
您的聚合包提供者应该为您的包提供一个常量命名空间标识符。这样,您可以在所有单个包提供者中一致地重用相同的值。
许可协议
包管理器是开源软件,许可协议为MIT许可协议