ipunkt/laravel-package-manager

laravel包管理器

2.0.0 2020-09-27 16:04 UTC

This package is auto-updated.

Last update: 2024-08-28 00:24:45 UTC


README

Total Downloads Latest Stable Version Latest Unstable Version License

简介

包管理器有助于减少包创建时间。因此,它支持一些基本的服务提供商,用于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许可协议