零、序言

条令 2 已经成为 PHP 最流行的现代持久性系统。它与 Symfony2 框架的标准版一起发布,可以在任何 PHP 项目中单独使用,并与 Zend framework 2、CodeIgniter 或 Laravel 很好地集成。它是高效的,自动抽象流行的数据库管理系统,支持 PHP5.3 功能(包括名称空间),可通过 Composer 安装,并具有经过广泛测试的高质量代码库。

Doctrine 的 ORM 库允许轻松持久化和检索 PHP 对象图,而无需手动编写任何 SQL 查询。它还提供了强大的面向对象的类似 SQL 的查询语言 DQL、数据库模式生成器工具、事件系统等。

为了发现这个必备库,我们将共同构建一个典型的小型博客引擎。

这本书涵盖的内容

第 1 章开始学习条令 2,介绍如何通过 Composer 安装公共、DBAL 和 ORM 库,获得我们的第一个实体管理器,并在介绍我们在本书中构建的项目后配置命令行工具(理论体系结构和开发环境的配置)。

第 2 章实体和映射信息介绍了条令实体的概念。我们将创建一个第一实体,用注解将它映射到数据库,生成数据库模式,创建数据固定器,最后,为博客的用户界面打下基础。

第 3 章关联解释了如何处理 PHP 对象和 ORM 之间的关联。我们将创建新实体,详细说明一对一、一对多和多对多关联,生成底层数据库模式,创建数据装置,并在用户界面中使用关联。

第 4 章构建查询创建实体库,帮助理解如何使用查询生成器生成 DQL 查询和检索实体。我们还将了解聚合函数。

第五章进一步将考察学说的先进特征。我们将看到条令管理对象继承、处理实体生命周期事件和创建本机 SQL 查询的不同方式。

这本书你需要什么

要执行本书的示例,您只需要 PHP5.4+文本编辑器或 PHPIDE,以及您最喜欢的浏览器。

这本书是给谁的

读者应该对面向对象编程、PHP(包括 PHP5.3 和 5.4 中介绍的功能)以及一般数据库概念有很好的了解。

公约

在这本书中,你会发现许多不同类型的文本可以区分不同类型的信息。下面是这些风格的一些例子,并解释了它们的含义。

文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL 和用户输入如下所示:“NativeQuery类允许您执行本机 SQL 查询并将其结果作为实体获取。”

代码块设置如下:

    /**
     * Adds comment
     *
     * @param  Comment $comment
     * @return Post
     */
    public function addComment(Comment $comment)
    {
        $this->comments[] = $comment;
        $comment->setPost($this);

        return $this;
    }

当我们希望提请您注意代码块的特定部分时,相关行或项目以粗体显示:

    /**
     * Adds comment
     *
     * @param  Comment $comment
     * @return Post
     */
    public function addComment(Comment $comment)
    {
        $this->comments[] = $comment;
 $comment->setPost($this);

        return $this;
    }

任何命令行输入或输出的编写方式如下:

# php bin/load-fixtures.php

新术语重要词语以粗体显示。例如,您在屏幕上、菜单或对话框中看到的文字出现在文本中,如下所示:“以下文本必须在终端中打印:注意:此操作不应在生产环境中执行。”

警告或重要注释显示在这样的框中。

提示

提示和技巧如下所示。

读者反馈

我们欢迎读者的反馈。让我们知道你对这本书的看法你喜欢或可能不喜欢什么。读者反馈对于我们开发您真正从中获益最多的标题非常重要。

要向我们发送一般反馈,只需向<[feedback@packtpub.com](mailto:feedback@packtpub.com)>发送电子邮件,并通过邮件主题提及书名即可。

如果您对某个主题有专业知识,并且您有兴趣撰写或贡献一本书,请参阅我们的作者指南,网址为www.packtpub.com/authors

客户支持

既然您是一本 Packt 图书的骄傲拥有者,我们有很多东西可以帮助您从购买中获得最大收益。

下载示例代码

您可以下载您在账户购买的所有 Packt 书籍的示例代码文件 http://www.packtpub.com 。如果您在其他地方购买了本书,您可以访问http://www.packtpub.com/support 并注册,将文件直接通过电子邮件发送给您。

勘误表

虽然我们已尽一切努力确保内容的准确性,但错误确实会发生。如果您在我们的一本书中发现错误,可能是文本或代码中的错误,如果您能向我们报告,我们将不胜感激。通过这样做,您可以使其他读者免于沮丧,并帮助我们改进本书的后续版本。如果您发现任何错误,请访问进行报告 http://www.packtpub.com/submit-errata ,选择您的书籍,点击勘误表提交表单链接,输入您勘误表的详细信息。一旦您的勘误表得到验证,您的提交将被接受,勘误表将上传到我们的网站上,或添加到该标题勘误表部分的任何现有勘误表列表中。通过从中选择您的标题,可以查看任何现有勘误表 http://www.packtpub.com/support

盗版

在互联网上盗版版权材料是所有媒体的一个持续问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上发现我们作品的任何形式的非法复制品,请立即向我们提供地址或网站名称,以便我们采取补救措施。

请致电<[copyright@packtpub.com](mailto:copyright@packtpub.com)>与我们联系,并提供可疑盗版材料的链接。

我们感谢您在保护我们的作者方面的帮助,以及我们为您带来有价值内容的能力。

问题

如果您对本书的任何方面有疑问,请致电<[questions@packtpub.com](mailto:questions@packtpub.com)>与我们联系,我们将尽力解决。