我是symfony的新手,更像是symfony cmf。我有项目的想法,并希望开始,但因为我正在阅读文档,我越来越困惑。
我需要构建的是具有树状结构路由的CMS以及对这些路由的多语言支持。但是我对这个PHPCR的东西感到困惑,因为它对我来说很新,而且我不想将java安装到我的服务器上,这是否意味着,我无法使用CMF?
我读过Doctrine ORM解决方案,但没有找到示例,清晰的文档,还有另外两个概念,我无法弄清楚:
它们有多么不同,或者它们相互补充?
所以总结一下这个问题:如果有人可以解释我PHPCR,PHPCR-ODM,doctrine-dbal,并告诉我可以使用CMF创建CMS而只使用MySQL数据库(我看到它可能的加载路径)来自DB)以及如何处理这个问题?
答案 0 :(得分:1)
PHPCR的故事与您从其他数据库存储系统中了解的情况略有不同。这可能会引起混淆,所以让我解释它背后的概念。
基本流程图可以表示为:
Application层是您编写的PHP代码。要在PHPCR中放入一些数据,您需要创建一个新节点(就像MySQL数据库中的一行)并将其注入PHPCR层。该层与jackalope连接通信,该连接与DB绑定。
如果您使用的是Doctrine PHPCR-ODM,那么Application层和PHPCR层之间会有一个新层。您不会直接使用PHPCR,您只能通过此Doctrine图层使用它。
Jackalope图层可以有多种不同的方式用于不同的DB图层。到目前为止,Jackalope层有两个选项:Jackrabbit或Doctrine DBAL 使用Jackrabbit选项,您可以通过Jackalope与JAVA Jackrabbit DB系统进行通信。这是功能最强大,功能最丰富,最合适的选择 您也可以选择使用Doctrine DBAL。此Jackalope适配器将使用Doctrine DBAL层与DB通信。 Doctrine DBAL可以与大多数关系数据库(SQLite,MySQL,Oracle等)一起使用。
几乎所有来自Symfony CMF的示例都使用Doctrine DBAL版本,因为如果您是PHPCR世界的新手,它的设置会更容易。只需查看documentation,sandbox或standard edition作为示例。