ob娱乐下载Symfony2:注释变得更好
今天晚些时候,我将发布Symfony2 beta2。ob娱乐下载但首先,我想谈谈昨天登陆master的一个大变化。您可能知道,Symfony2为Doctob娱乐下载rine映射信息和验证配置使用注释。当然,这完全是可选的,XML、YAML甚至PHP也可以做到这一点。但是使用注释很方便,可以在同一个文件中定义所有内容。
ob娱乐下载Symfony标准版通过两个附加包提供了更好的注解支持:SensioFrameworkExtraBundle
而且JMSSecurityExtraBundle
.它们允许你使用注释进行控制器配置(路由、缓存、安全、模板等等)。
为了避免不同库/包定义新注释时的歧义,你被要求使用一个可配置的“前缀”:
/** * @orm:实体*/类User {/** * @orm:列(type="string", nullable=false) * @assert:NotBlank */ private $name;}
但是几个问题很快就出现了:
如果你看一下教义文档,你会发现这一点欧宝官网下载app
@ column
用来代替@orm:列
.这是因为前缀是可选的。因此,Doctrine文档没有使用欧宝官网下载app,但Symfony2强迫您使用ob娱乐下载orm
.注意,它是可配置的,因此您可以使用任何其他前缀(@doctrine:列
).注释库在自动加载时表现不佳。
SensioFrameworkExtraBundle
而且JMSSecurityExtraBundle
共享同一个额外的
前缀,但它是一个黑客,并不是真正的可扩展。
约翰内斯在过去的几个星期里努力工作,以找到一个优雅的解决这个问题的方法。由于每个注释都定义为一个类,因此我们决定使用全限定类名,而不是只使用短类名。它消除了定义为全局配置的任意前缀的需要,避免了库之间的任何歧义,并完全摆脱了自动加载问题:
/** * @Doctrine\ORM\Mapping\Entity */ class User {/** * @Doctrine\ORM\Mapping\Column(type="string", nullable=false) * @Sob娱乐下载ymfony\Component\Validator\Constraints\NotBlank */ private $name;}
当然,到处使用FQCN是相当冗长的,但幸运的是,PHP已经通过使用
声明:
使用Doctrine\ORM\Mapping作为ORM;使用Syob娱乐下载mfony\Component\Validator\Constraints作为Assert;/** * @ORM\Entity */ class User {/** * @ORM\Column(type="string", nullable=false) * @Assert\NotBlank */ private $name;}
注释现在感觉更加“原生”。如果您想在Symfony2上下文之外使用注释,请查看Doctrine Commonob娱乐下载存储库(版本3.0)。
评论
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。
仍然没有默认=选项?!
有人尝试生成包含这些注释的文档吗?欧宝官网下载app
最后,我们还没有讨论哪些功能将被弃用,哪些功能将进入3.0
虽然我看到它现在被称为“Symfony标准版”。ob娱乐下载
拜托拜托拜托拜托拜托拜托告诉我symfony不会有‘标准版’和‘高级版’……ob娱乐下载
我希望解析器能够适应(也许旧的除外),但新格式的详细说明是必要的。我知道我不介意修改DocBlox,但我需要规范。
上面的格式也与内部的工作相冲突,内部为类似的功能提出了不同的格式。也许你和吉列尔莫可以合作达成一个统一的标准?
首先,它没有提到使用非字母数字字符作为标记名。
此外,它在标签的'description'部分中显示该内容;上面的代码显示@tagname和(content)之间没有空格。这在生成文档时没有帮助,因为标签不再是标识符,而是具有上下文含义,因此欧宝官网下载app有无数的变化。
例如,可能会有一个“Rest Server Edition”或“CMF Edition”,预先配置了相关的bundle、库和设置。
少wtf的. .
好主意=)
有没有人有C和PHP内部技能,谁可以实现这个缺失的特性,这样它就可以合并到PHP5.4!?