我有一个应用程序,其中包含核心网站、API和管理区域。我想知道将所有内容放在一个应用程序中是否是个坏主意,还是应该创建不同的Symfony2项目或将它们拆分为不同的内核?
我不确定在同一个内核上添加许多bundle会对性能产生很大影响还是只是一点点,这并不重要?
以下是选项:
- 将所有内容保留在同一个内核中,这不会有太大的差异。
- 为应用程序的不同部分(API、管理和核心网站)使用多个内核。
- 为管理区域和API创建不同的Symfony2项目。
- 或者您的智慧之言 :)
我有一个应用程序,其中包含核心网站、API和管理区域。我想知道将所有内容放在一个应用程序中是否是个坏主意,还是应该创建不同的Symfony2项目或将它们拆分为不同的内核?
我不确定在同一个内核上添加许多bundle会对性能产生很大影响还是只是一点点,这并不重要?
以下是选项:
public function registerBundles()
{
$bundles = array(
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
new Symfony\Bundle\TwigBundle\TwigBundle(),
new Symfony\Bundle\MonologBundle\MonologBundle(),
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
//new AppBundle\AppBundle()
);
if (in_array($this->getEnvironment(), array('api'), true)) {
$bundles[] = new ApiBundle\ApiBundle();
//-- Other bundle
}
//-- Other environments
return $bundles;
}
}
为管理区域和api创建不同的Symfony2项目。
)-因为您可能不会构建两个单独的应用程序。zones
,但是在前端(当为api激活view_listener
时),view_handler
仍将被初始化并注入到侦听器中-https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/Resources/config/view_response_listener.xml#L11。components(组件)
(来自项目中不同的内核)带来额外的工作负担-但在使用composer的世界中,这不再是一项巨大的任务。这是个人选择,但我有一个类似的项目,我在同一个项目中有publicBundle、adminBundle和apiBundle。
额外的性能损失可以忽略不计,但组织是关键...这就是为什么我们首先使用MVC包(Symfony)的原因,不是吗? :)
NB:您的术语有点混淆,我认为您所说的Kernel
是指Bundle
。
拥有多个内核不一定有帮助。
将您的应用程序拆分成捆绑包,并保留通过应用程序的不同部分共享实体(等等)的所有优势。
您可以定义分离的路由/控制器/配置,这些内容根据主机/URL加载。
注意:
如果您要将应用程序分为两个大捆绑包(即管理和API),并且两者共享相同的实体,则肯定需要做出选择。
这个选择可能涉及到您的一个捆绑包包含太多(和不相关的)逻辑,并且需要稍后将其重构为几个捆绑包。
为应用程序的每个部分创建一个捆绑包,该部分对应于一组相关资源,并通过来自配置的不同上下文区分两个部分。
此外,请合理命名您的类/命名空间。
if (in_array($this->getEnvironment(), array('dev', 'test'))) {
在appKernel中实现。 - pietro