sw2eu/hotplug

v0.9.5 2016-08-10 10:12 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:20:04 UTC


README

Nette 没有任何插件或包管理。如果您想将应用程序拆分为多个模块,您可能会使用配置文件的 includes 部分。这个库将帮助您以简单而优雅的方式简化这个问题。

需求

此库需要 PHP 5.4 或更高版本。Hotplug 目前为 Nette 框架 的 2.3 和 2.4 版本设计(更多信息请参阅 发布信息)。

安装

安装此库的最佳方式是使用 Composer

$ composer require sw2eu/hotplug

文档

首先,您将在引导文件中使用 Hotplug 配置器,而不是经典的 Nette\Configurator

$configurator = new Sw2\Hotplug\Configurator;

现在您可以定义您的插件目录。我使用略微不同的结构,但它可以完全配置

$configurator->addPluginDirectory(__DIR__ . '/../src/Plugins');
// place before
$configurator->addConfig(...);

Hotplug 配置器将在定义的目录中搜索任何 config/hotplug.neon。例如

  • src/Plugins/Admin/config/hotplug.neon,
  • src/Plugins/Cms/Page/config/hotplug.neon,
  • 等等。

此搜索被缓存,因此仅在构建容器时第一次处理。如果您想添加新的插件,您必须手动删除 hotplug 缓存(在文件 temp/cache/_Sw2.Hotplug 中)。

这就是全部!现在您可以定义您的插件。

插件定义

每个插件都必须定义配置文件 hotplug.neon。在此文件中,您的工作方式与任何 Nette 框架配置文件一样(也许您可以阅读 文档中的配置部分)。

您还可以使用变量 %pluginDir% 来定位插件目录中的文件,例如资产。

路由助手

如果您需要为您的插件添加新的路由,这也很简单。Hotplug 已经为这个问题准备好了。在您的应用程序配置中定义主应用程序路由如下

# main application config
services:
    router: Sw2\Hotplug\Routers\RouterFactory::createRouter

Hotplug RouterFactory 将搜索任何带有标签 router 的服务。如果您需要确保路由的顺序,只需按字母顺序命名。或者,您可以使用带有排序数字的命名约定,如下所示

# this is in your hotplug.neon
services:
	router.999:
	    class: Nette\Application\Routers\Route
	    arguments: ['<presenter>/<action>[/<id>]', 'Homepage:default']
	    autowired: FALSE
	    tags: [router]

不要忘记将 autowired 设置为 FALSE!如果您需要添加多个路由并且想将它们定义为 RouteList,此库有一个快捷类 Sw2\Hotplug\Routers\RouteList 适用于这种情况

# this is in your hotplug.neon
services:
	router.010:
		class: Sw2\Hotplug\Routers\RouteList('Admin')
		autowired: FALSE
		tags: [router]
		setup:
			- addRoute('admin/sign-in', 'Auth:signIn')
			- addRoute('admin/sign-out', 'Auth:signOut')
			- add(@otherRouterService)