如果不映射到Symfony2中的数据库,我应该将业务逻辑放在哪里?

如果不映射到Symfony2中的数据库,我应该将业务逻辑放在哪里?,symfony,business-logic,Symfony,Business Logic,我在Symfony2中创建了一个包含我的webapp的包。在这里,我有一些映射到MySQL数据库的实体。它们位于Acme\MyBundle\Entities中 现在,我已经创建了一些助手类,这些类不仅仅在MyBundle中使用,所以我将它们外包到一个单独的包中(例如Acme\MyHelperBundle)。在这里之前一切都很清楚 但是我应该把业务逻辑文件放在哪里呢?我要把它们放进去吗 Acme\MyHelperBundle\Entities或 Acme\MyHelperBundle\Resou

我在Symfony2中创建了一个包含我的webapp的包。在这里,我有一些映射到MySQL数据库的实体。它们位于
Acme\MyBundle\Entities

现在,我已经创建了一些助手类,这些类不仅仅在
MyBundle
中使用,所以我将它们外包到一个单独的包中(例如
Acme\MyHelperBundle
)。在这里之前一切都很清楚

但是我应该把业务逻辑文件放在哪里呢?我要把它们放进去吗

  • Acme\MyHelperBundle\Entities
  • Acme\MyHelperBundle\Resources
  • Acme\MyHelperBundle\Resources\src
  • 或者其他地方

对于这些helper类,什么样的名称空间才是好的呢?

创建一个模型文件夹,在其中创建一个类,您可以在其中放置业务逻辑,创建该类的服务,并在项目中的任何位置使用该类。

创建一个模型文件夹,并在其中创建一个类,您可以在其中放置业务逻辑并创建该类的服务类并在项目中的任何地方使用该类。

我认为没有真正的规则。 如果您的helper类被声明为服务(如果您想在所有包中使用它们,我认为是这样),那么您可以创建一个Manager文件夹。所以,当我在一个捆绑包上并且有一个管理器时,我知道我有一些逻辑,可以在任何地方重用

这也取决于您在文件中放置的内容,但是如果是像UserManager.php这样的助手,您可以在其上创建一些新请求(并将其声明为服务),那么Manager文件夹是一个很好的起点

您可以在许多包中找到此文件夹管理器,如


ps:对不起,我的英语,我希望它足够清楚:)

我认为没有真正的规则。 如果您的helper类被声明为服务(如果您想在所有包中使用它们,我认为是这样),那么您可以创建一个Manager文件夹。所以,当我在一个捆绑包上并且有一个管理器时,我知道我有一些逻辑,可以在任何地方重用

这也取决于您在文件中放置的内容,但是如果是像UserManager.php这样的助手,您可以在其上创建一些新请求(并将其声明为服务),那么Manager文件夹是一个很好的起点

您可以在许多包中找到此文件夹管理器,如


ps:对不起我的英语,我希望它足够清楚:)

为什么不使用Acme\MyHelperBundle\BusinessLogic?如果这是一种好的做法的话?这就是我要问的原因。为什么不使用Acme\MyHelperBundle\BusinessLogic?如果这是一个好的实践?这就是为什么我要问。那么模型文件夹是什么呢<代码>src,
实体
?你有什么建议?这完全取决于你。许多bundle只是在bundle的根目录下创建一个模型目录。如果我将我的
Class.php
MyBundle\Entity
移动到例如
MyBundle\Resources\src
,它会说找不到该类。我将
namespace Acme\MyBundle\Entity
设置为
namespace Acme\MyBundle\Classes
并通过
use Acme\MyBundle\Classes\MyClass
使用它,但它不起作用:(定义一个模型目录,然后在实体目录中定义实体并从模型类扩展。由于您是从模型类扩展,最好的方法是使用XML或YML作为元数据(映射)。如果您想使用注释,您必须重写属性,在我看来,这会破坏从模型类扩展的目的。那么,模型文件夹将是什么?
src
Entity
?您有什么建议?这完全取决于您。许多捆绑包只是在捆绑包的根目录下创建一个模型目录。I如果我将我的
Class.php
MyBundle\Entity
移动到例如
MyBundle\Resources\src
它表示找不到类。我将
namespace Acme\MyBundle\Entity
设置为
namespace Acme\MyBundle\Classes
并通过
使用Acme\MyBundle\Classes\MyClass
使用它,但它不起作用:(定义一个模型目录,然后在实体目录中定义实体并从模型类扩展。由于您是从模型类扩展,最好的方法是使用XML或YML作为元数据(映射)。如果要使用注释,则必须重写属性,在我看来,这与从模型类扩展的目的背道而驰。