组织您的业务逻辑

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 4.0,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

组织您的业务逻辑

在计算机软件中,业务逻辑或者领域逻辑是“对决定如何创建、显示、存储和更改数据的实际业务规则进行编码的程序的一部分”完整的定义).

在Syob娱乐下载mfony应用程序中,业务逻辑是您为应用程序编写的所有不特定于框架的自定义代码(例如路由和控制器)。域类、Doctrine实体和作为服务使用的常规PHP类都是业务逻辑的好例子。

对于大多数项目,应该将所有代码存储在src /目录中。在这里,你可以创建任何你想要组织的目录:

1 2 3 4 5 6 7 8 9
ob娱乐下载symfy -project/├─config/├─public/├─src/│├─Utils/│├─MyClass.php├─tests/├─var/├─vendor/

服务:命名和配置

最佳实践

使用自动装配来自动化应用程序服务的配置。

服务自动装配是Symfony的服务容器提供的一个特性,用于管理ob娱乐下载配置最少的服务。它读取构造函数(或其他方法)上的类型提示,并自动将正确的服务传递给每个方法。它还可以添加服务标签到需要它们的服务,如Twig扩展,事件订阅者等。

博客应用程序需要一个可以转换文章标题的实用程序(例如。“Hello World”)变成一个段语(例如:"hello-world")来包含它作为post URL的一部分。让我们创建一个新的重击者内部类src /跑龙套

1 2 3 4 5 6 7 8 9 10
/ / src / Slugger.php跑龙套名称空间应用程序跑龙套重击者公共函数slugify(字符串价值字符串/ /……}}

如果你在用默认的服务。yaml的配置,该类自动注册为ID为的服务App \跑龙套\棒球强击手(或者只是巨炮::类如果类已经在代码中导入)。

最佳实践

应用程序服务的id应该等于它们的类名,除非为同一个类配置了多个服务(在这种情况下,使用蛇形例id)。

现在,您可以在任何其他服务或控制器类中使用自定义重击器,例如AdminController

12 3 4 5 6 7 8 9 10 11 12 13
使用应用程序跑龙套重击者公共函数创建(请求请求轰,重击者/ /……如果形式->isSubmitted () & &形式->isValid ()) {鼻涕虫重击者->slugify (帖子->getTitle ());帖子->setSlug (鼻涕虫);/ /……}}

服务也可以是公共或私人.如果你使用默认的服务。yaml的配置默认情况下,所有服务都是私有的。

最佳实践

服务应该是私人只要有可能。这将阻止您通过集装箱- > get ().相反,您将需要使用依赖项注入。

服务格式:YAML

如果你使用默认的服务。yaml的配置,大部分服务将自动配置。但是,在某些边缘情况下,您需要手动配置服务(或服务的一部分)。

最佳实践

使用YAML格式配置您自己的服务。

这是有争议的,根据我们的经验,YAML和XML的使用在开发人员中是均匀分布的,对YAML有轻微的偏好。这两种格式具有相同的性能,因此这最终取决于个人喜好。

我们推荐YAML,因为它对新手很友好,而且简洁。当然,您可以使用任何您喜欢的格式。

使用持久层

ob娱乐下载Symfony是一个HTTP框架,它只关心为每个HTTP请求生成HTTP响应。这就是为什么Symfoob娱乐下载ny不提供与持久层(例如数据库、外部API)通信的方法。你可以选择任何你想要的库或策略。

在实践中,许多Symfony应用程序ob娱乐下载依赖于独立的主义项目使用实体和存储库定义他们的模型。与业务逻辑一样,我们建议将Doctrine实体存储在src /实体目录中。

我们的示例博客应用程序定义的三个实体就是一个很好的例子:

1 2 3 4 5 6 7
ob娱乐下载Symfony-project /├─…├─src/├─Entity/ Comment.php├─Post.php

原理映射信息

Doctrine实体是存储在某个“数据库”中的普通PHP对象。Doctrine仅通过为模型类配置的映射元数据了解您的实体。Doctrine支持四种元数据格式:YAML、XML、PHP和注释。

最佳实践

使用注释来定义Doctrine实体的映射信息。

注解是目前为止最方便、最敏捷的设置和查找映射信息的方法:

12 34 56 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
名称空间应用程序实体使用学说ORM映射作为ORM使用学说常见的集合ArrayCollection/ * * *@ORM实体\ * /帖子常量NUMBER_OF_ITEMS =10/ * * *@ORM\ Id *@ORM\ GeneratedValue *@ORM\列(类型=“整数”)* /私人id/ * * *@ORM\列(type = "字符串")* /私人标题/ * * *@ORM\列(type = "字符串")* /私人鼻涕虫/ * * *@ORM\列(type = " text ") * /私人内容/ * * *@ORM\列(type = "字符串")* /私人authorEmail/ * * *@ORM\列(type = " datetime) * /私人publishedAt/ * * *@ORM\OneToMany(* targetEntity="Comment", * mappedBy="post", * orphanRemoval=true *) *@ORM\ OrderBy({“publishedAt”=“ASC”})* /私人评论公共函数__construct()->publishedAt =\ DateTime ();->评论=ArrayCollection ();}// getter和setter…

所有格式都有相同的性能,所以这最终又是一个品味问题。

数据设备

由于Symfony默认情况下不启用fixture支持,您应该执行以下命令来安装Doctrine fob娱乐下载ixture包:

1
作曲家要求“教义/ doctrine-fixtures-bundle”

然后,将自动启用此包,但仅用于dev而且测试环境:

1 2 3 4 5 6
/ /配置/ bundles.php返回/ /……学说\包\ FixturesBundle \ DoctrineFixturesBundle::Class => [“开发”= >真正的“测试”= >真正的]];

我们建议创建一个设备类为了简单起见,如果类变得相当大,欢迎您添加更多。

假设你至少有一个fixture类,并且数据库访问配置正确,你可以通过执行以下命令加载你的fixture:

1 2 3 4 5
小心,数据库将被清除。你想要继续Y / N ?Y >清洗数据库>加载App\DataFixtures\ORM\LoadFixtures

编码标准

Symfob娱乐下载ony源代码遵循PSR-1而且PSR-2由PHP社区定义的编码标准。欧宝体育平台怎么样你可以了解更多Symfob娱乐下载ony编码标准甚至使用PHP-CS-Fixer,这是一个命令行实用程序,可以在几秒钟内修复整个代码库的编码标准。


下一个:控制器

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。