motana / multikernel
Motana 多内核包
Requires
- php: >=5.6
- sensio/framework-extra-bundle: ^3.0.2
- sensio/generator-bundle: ^3.1
- symfony/monolog-bundle: ^3.0.2
- symfony/symfony: 3.4.*
Requires (Dev)
- doctrine/doctrine-bundle: ^1.6
- doctrine/doctrine-cache-bundle: ^1.3
- doctrine/orm: ^2.5
- php-coveralls/php-coveralls: ^2.0
- sensio/distribution-bundle: ^5.0
- symfony/phpunit-bridge: ^4.0
- symfony/swiftmailer-bundle: ^2.0
README
此扩展包通过在同一个项目目录中使用多个应用程序的能力,扩展了Symfony3项目,所有应用程序都使用相同的front controller和bin/console运行。
应用程序内的路由将按常规工作,这意味着现有的路由将继续工作。每个应用程序都将通过front controller以内核名称作为URL前缀提供。替换bin/console的命令可以运行cache:clear、cache:pool:clear和assets:install等命令,以便在一次运行中为所有应用程序执行,这将使得SensioDistributionBundle在运行composer install或composer update时为所有应用程序执行这些命令。
由于BootKernel是一个几乎禁用了几乎所有功能的修改过的Symfony Kernel,因此具有前缀额外内核的处罚相对较小。
安装
步骤 1:下载包
打开命令行,进入您的项目目录,并在shell中执行以下命令以下载此包的最新稳定版本
$ composer require motana/multikernel
。
步骤 2:启用包
通过将其添加到项目中的注册包列表中,在项目的app/AppKernel.php文件中启用该包。确保它注册在SensioGeneratorBundle之后
// app/AppKernel.php // ... class AppKernel extends Kernel { // ... public function registerBundles() { // ... $bundles[] = new Motana\Bundle\MultikernelBundle\MotanaMultikernelBundle(); return $bundles; } // ... }
步骤 3:使用包的命令转换项目
打开命令行,进入您的项目目录,并执行以下命令以转换项目
$ bin/console multikernel:convert
文件系统结构如何更改
运行multikernel:convert命令将对项目的文件系统结构做出以下更改
- 将在项目的
apps/子目录中创建一个启动内核骨架 - 将找到的所有应用程序都将复制到
apps/<DIR_NAME> - 每个应用程序的内核都将修改为与BootKernel一起运行
- 应用程序的配置已修改以反映文件系统结构更改
- front controller和bin/console被替换
在所有更改完成后,将删除原始应用程序目录以及var/cache/、var/logs和var/sessions下所有的文件和目录。
该命令对每个应用程序内核做出以下更改以使其在多内核环境中工作
- 使用子句被替换以使用MotanaMultikernelBundle中的类
- getCacheDir()、getLogDir()和registerContainerConfiguration()方法被删除
该命令更改了每个应用程序的配置以适应更改的var/目录方案
- 每个内核的缓存存储在
var/cache/<KERNEL_NAME>/<ENVIRONMENT_NAME> - 每个内核的日志存储在
var/logs/<KERNEL_NAME>/<ENVIRONMENT_NAME>.log - 每个内核的会话存储在
var/sessions/<KERNEL_NAME>
运行multikernel:convert命令后,在shell上运行以下命令
$ composer dump-autoload
配置
以下设置可用于在应用程序的config/config.yml中配置BootKernel
# Default configuration for "MotanaMultikernelBundle" motana_multikernel: # Default kernel the front controller should load when no kernel matches the URL default: null # Example: "app" for the default AppKernel # Class cache configuration class_cache: # Classes to exclude from being cached in classes.php of app kernels exclude: [] # Console commands configuration commands: # Commands to add as multi-kernel command, bypassing the requirement of being available for all kernels add: [] # Commands that will always be run on the boot kernel and will be hidden in the other kernels global: [] # Commands that will be hidden in all kernels hidden: [] # Commands that will be left as-is, overriding all of the above command settings ignore: []
测试您的项目
要反映文件系统结构和路由的更改,您的phpunit.xml需要按照以下方式更新
将KERNEL_CLASS设置更改为BootKernel
<server name="KERNEL_CLASS" value="BootKernel" />
要选择在扩展Symfony\Bundle\FrameworkBundle\Test\WebTestCase的测试中使用的内核,只需在测试中使用的URL前加上内核名称即可。
鸣谢
本捆绑包的部分内容基于 Fabien Potencier(fabien@symfony.com)和 Jean-François Simon(contact@jfsimon.fr)的工作。
许可协议
此捆绑包受MIT许可协议的许可 - 详细内容请参阅LICENSE文件。