donepm / package-manager
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
的包服务提供程序,并按如下方式注册所有与包相关的提供程序作为属性
<?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许可证授权。