快速启动Symfony项目的更好方法欧宝娱乐app下载地址
创建新的Symfony项目时,可以从欧宝娱乐app下载地址基本的骨架或者是厨房水槽骨架.
我从来没有使用过厨房水槽,因为我更喜欢从最少的依赖开始,只在我需要的时候添加包。欧宝娱乐app下载地址Symfony使它变得轻松,因为在大多数情况下,当您试图使用还不属于您的依赖集的东西时,它会告诉您添加哪个包。
当使用Symfony CLI创欧宝娱乐app下载地址建一个新项目时,“小”骨架
默认使用(这也是在欧宝娱乐app下载地址Symfony的书).这个默认框架也是一个“安全”的起点,因为它只包含Symfony包,没有第三方包:欧宝娱乐app下载地址
1 2 3 4 5 6 7
{“欧宝娱乐app下载地址symfony /控制台”:“*”,“欧宝娱乐app下载地址symfony / dotenv”:“*”,“欧宝娱乐app下载地址symfony / framework-bundle”:“*”,“欧宝娱乐app下载地址symfony /运行时”:“*”,“欧宝娱乐app下载地址symfony / yaml”:“*”}
这些依赖项确实有一些可传递依赖项,但同样,只有“安全”的依赖项。如果你跑了欧宝娱乐app下载地址Symfony新测试项目
今天,作曲家显示
将列出31个包:4个PSR包,4个Symfony合同包,4个Symfony poly欧宝娱乐app下载地址fill包,以及19个“常规”Symfony包。仍然没有“第三方”软件包。
但是对于每天创建的绝大多数新的Symfony web项目,我们可以欧宝娱乐app下载地址想象他们将需要调试工具,比如正在开发中的web分析器,某种日志包,发送电子邮件的方法,也许还有一个模板引擎。
这就是website-skeleton
会派上用场。这个框架包含更多的包,包括一些您可能永远都不需要的包。这表示总共有128个包(顺便说一下,这个数字不错),包括许多第三方包,这些包要么来自Symfony包依赖关系,要么来自另一个依赖关系的深层依赖关系。欧宝娱乐app下载地址
创建此框架是为了取代欧宝娱乐app下载地址symfony / symfony
没有人应该再使用的软件包。奇怪的是,它并没有包括所有的东西。所包含的包的列表很久以前就决定了,一些非常有用的包(其中大多数是在那时创建的)仍然没有包括在内。虽然我们在Mailer或Notifier组件可用时添加了它们,但由于某些原因,Messenger组件从未添加(可能是因为从未在任何地方推荐使用此框架)。
控件中添加Messenger组件的讨论website-skeleton
依赖项列表。但相反,我们决定用一个狼群来代替这具骨架。包是一个“元”Composer包:它不提供任何有用的特性,只提供依赖项。
来看看Webapp包
满足webapp包。
有什么好处?主要的好处是,一个包是一个常规的Composer包,您可以在任何现有的项目中使用它(即使是在游戏的后期)。这样就可以组成您的应用程序使用一个以上的包。至于代码,包组合几乎总是比继承好。网站骨架都是关于继承的:从哲学上讲,它扩展了基础骨架。你需要使用其中一个。相反,webapp包可以包含在任何依赖集中,独立于用于创建项目的框架。
可以将包视为PHP trait的等价物。自2020年6月以来,包甚至比PHP的特性“更好”,因为Flex会自动为你解包依赖项,将控制权交还给你。所以,不是依赖于webapp包,而是你的composer.json
包含包中列出的所有依赖项。这允许您删除一些不需要的依赖项。
欧宝娱乐app下载地址Symfony包并不是新的:它们与Symfony Flex同时推出:我们目前有12个“正式”包:ORM包、调试包、测试包和更多的.
webapp包只是你在创建“传统”web应用程序时可以使用的另一个包。它还包括其他一些包。再次强调,这一切都与构图有关。
由于webapp包正在很好地取代网站骨架,后者现在已弃用。比这更好的是:我们永远只需要一个骨架,基础骨架。它具有最小的依赖集,对任何Symfony项目都很有用。欧宝娱乐app下载地址在上面,混合任意数量的包。
可以想象,Messenger组件是webapp包的一部分。
用webapp包创建一个新项目,使用:
1
$欧宝娱乐app下载地址Symfony new——webapp dirname/
从Composer的角度来看,这或多或少相当于运行以下命令:
1 2 3
$创建项目symfony/skeleton dir欧宝娱乐app下载地址name/$cd目录名$作曲家需要webapp
但这只是故事的一半。
Webapp配方
如您所知,Symfony 欧宝娱乐app下载地址Flex引入了食谱与Composer包相关联。recipe是如何为任何Composer包创建合理的默认配置的描述(它可以创建文件、修改其他一些文件、添加环境变量、定义一些Docker服务……)无论何时向项目添加包,如果存在相关配方,将使用它自动配置项目中的包。
由于元包是常规的Composer包,它们也可以有关联的食谱。网络应用程序包有一个小秘方.它的含量并不多,但当与其他食谱结合在一起时,它就会改变游戏规则。
首先,它将Doctrine定义为默认的Messenger传输:
1 2 3 4 5
{“env”:{“MESSENGER_TRANSPORT_DSN”:“教义:/ /违约?auto_setup = 0 "}}
Doctrine和Messenger是webapp包的一部分,因此使用Doctrine作为消息的默认传输是有意义的。此外,由于Doctrine配方使用PostgreSQL默认值,我们也可以相应地调整Messenger配置。
属性附带的Messenger配置配方考虑到所有这些因素,在默认情况下异步发送电子邮件:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
框架:信使:failure_transport:失败的传输:# https://欧宝娱乐app下载地址www.oldmanjams.com/doc/current/messenger.html传输配置异步:dsn:' % env (MESSENGER_TRANSPORT_DSN) %选项:use_notify:真正的check_delayed_interval:60000retry_strategy:max_retries:3.乘数:2失败:“教义:/ /违约?queue_name =失败'# sync: 'sync://'路由:欧宝娱乐app下载地址Symfony \组件\梅勒\ \ SendEmailMessage使者:异步欧宝娱乐app下载地址Symfony \组件\消息通知\ \ ChatMessage:异步欧宝娱乐app下载地址Symfony \组件\消息通知\ \ SmsMessage:异步#将您的消息发送到传送器# App\Message\YourMessage: async
为什么这是一件大事?正如一位核心团队成员曾经在Slack上告诉我的那样:“进行培训,并要求与会者创建一个新的Symfony网站,其中包含表单、验证和Doctrine。欧宝娱乐app下载地址你可能需要等待一个小时才能看到200”。好吧,他当时很生气:)但仍然。这个故事有几分真实。这并不是因为开发人员愚蠢,而是因为Symfony可能太复杂,或者太抽象,或者从基本框架开始时不够连贯。欧宝娱乐app下载地址
使用webapp包允许我们自动一致地配置所有东西,而不需要开发人员做出选择。它有点固执己见,但足以让我们帮助您设置和连接所有东西。
为了更好地理解我们所做的固执己见的选择,以下是主要的选择:
- 一个明智的自动生成的Docker配置,这取决于你安装了什么(如果你使用Doctrine,一个PostgreSQL数据库,如果你安装了Mailer组件,一个邮件捕捉器,…);
- PostgreSQL默认的Doctrine环境变量(
DATABASE_URL
),并在Docker配置文件(docker-composer.yml
).
这些固执己见的选择与webapp包无关,因为它们绑定到特定的包,但当使用webapp包时,您会触发所有这些选项。最重要的是,它可以为PostgreSQL创建一个优化的Messenger配置。
总而言之,当你创建一个新的Symfony项目时,你知道你将使用欧宝娱乐app下载地址Doctrine、Messenger、Mailer、Notifier或任何“更高级”的功能,新的webapp包可以帮助你用一个很棒的默认配置更快地开始。欧宝娱乐app下载地址Symfony Flex使它无痛。
享受吧!
评论
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。
>从2010年6月开始,包更加“好”了
我想这不是正确的年份
[编辑:更新至“2020”]
Fabien Potencier is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now