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许可协议