2014-04-04 72 views
1

我是symfony的新手,甚至是symfony cmf。我有项目的想法,并希望开始,但由于我正在阅读文档,我越来越困惑。Symfony CMF混淆

我需要打造的是CMS状结构的路线,并为这些路由的多语言支持的树。然而,我对这个PHPCR的东西感到困惑,因为它对我来说是新的,我不想将java安装到我的服务器,这是否意味着我不能使用CMF?

我读的学说的ORM解决方案,但并没有发现例如,清晰的文档还有还有2个概念,我想不通:

  • 主义/ phpcr-ODM
  • 鹿角兔/ jackalope-doctrine-dbal

他们有多么不同,或者他们可能相互补充?

因此,要解决这个问题:如果有人能解释我PHPCR,PHPCR-ODM,doctrine-dbal,并告诉我可以使用CMF创建CMS并且只使用MySQL数据库(我注意到它可能从DB加载路由)以及如何解决这个问题?

回答

1

PHPCR的故事与您从其他数据库存储系统知道的有点不同。这可能会导致混淆,因此让我解释它背后的概念。

基本流程图可以被表示为这样的: basic flow chart

中的应用层是已写入的PHP代码。为了将一些数据放入PHPCR中,您需要创建一个新节点(就像MySQL数据库中的一行)并将其注入到PHPCR层。该层与一个jackalope连接进行通信,该连接绑定到DB。

如果您使用的是学说PHPCR-ODM,还有就是应用层和PHPCR层之间的新层。你不会直接使用PHPCR,你只能通过这个Doctrine层来使用它。

对于不同的DB层,Jackalope层可以有多种不同的方式。到目前为止,Jackalope层有两个选项:Jackrabbit或Doctrine DBAL。
使用Jackrabbit选项,您可以通过Jackalope与JAVA Jackrabbit DB系统进行通信。这是最强大,功能最丰富和最合适的最快选择。
您也可以选择使用Doctrine DBAL。这个Jackalope适配器将使用Doctrine DBAL层来与数据库进行通信。 Doctrine DBAL可以处理大多数关系数据库(SQLite,MySQL,Oracle等)。

几乎从Symfony的CMF所有示例使用原则DBAL版本,因为它更容易,如果你是新进入PHPCR世界建立。例如,请看documentationsandboxstandard edition

+0

所以,如果我使用Doctrine DBAL(如果我理解正确的鹿角兔-主义-DBAL),我不需要PHPCR,PHPCR-ODM,或其他任何东西,我可以只使用PHP和MySQL创建我的网站,没有在后台运行的java怎么样?第二个问题是我看到了使用symfony cmf构建的系统的视频 - https://www.youtube.com/watch?v=i5Y5QPcYWHw,以及我们在文件系统上记录的路由,因此通过使用Doctrine DBAL,我可以避免这种情况,并将我的路线存储在数据库中? –

+1

PHPCR是一组*界面*,定义了如何与树结构化数据进行交互。 phpcr-odm是一个对象映射器,因此您可以使用域对象而不是原始数据。cmf与对象一起工作,并为phpcr-odm提供绑定。你可以为自己的教条orm或任何其他对象映射器编写自己的对象 - 但是phpcr树的哲学在cms系统中确实很好。由于phpcr只是界面,你需要一个phpcr的实现。正如wouter所说,你可以选择与sql数据库一起工作的jackalope-doctrine-dbal,或者与java谈话的jackalope-jackrabbit – dbu