donepm/package-manager

该包已被废弃,不再维护。作者建议使用 ipunkt/laravel-package-manager 包。

laravel 包的包管理器

2.0.0 2020-09-27 16:04 UTC

This package is auto-updated.

Last update: 2020-09-27 16:06:42 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 的包服务提供程序,并按如下方式注册所有与包相关的提供程序作为属性

<?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许可证授权。