36 创建一个新的扩展器
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
一个扩展器,就是一个简单的实现了SelectQueryInterface接口的类;并且在它的构造函数中,有两个参数:一个选择查询(或者是一个实现了SelectQueryInterface接口的对象)和一个DatabaseConnection对象。它必须重新实现SelectQueryInterface接口中的方法,并把它们传递给构造函数中指定的查询对象,在合适的时候返回自己。
内容包括drupal7教程,drupal7汉化,drupal7主题,drupal7模板,drupal7中文手册,drupal7 views,drupal7中文,drupal7安装,drupal7开发,drupal7视频,等
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
一个扩展器,就是一个简单的实现了SelectQueryInterface接口的类;并且在它的构造函数中,有两个参数:一个选择查询(或者是一个实现了SelectQueryInterface接口的对象)和一个DatabaseConnection对象。它必须重新实现SelectQueryInterface接口中的方法,并把它们传递给构造函数中指定的查询对象,在合适的时候返回自己。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
为了使用一个扩展器,你首先需要有一个查询对象。extend()方法由查询对象返回一个新的对象,来替换原有的查询对象。例如:
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
选择查询支持“扩展器”这一概念。一个扩展器,就是在运行时向选择查询添加功能的一种方式。添加功能的方式有两种,可以是附加新的方法,也可以是改变已有方法的行为。
对于熟悉面向对象设计模式的人来说,扩展器就是装饰模式的一个实现。它通过一种灵活的方式,而不是采用子类继承的方式,从而向对象动态的追加额外的扩展功能。
为了检查查询对象在其生命周期中的特定一点所构建的SQL查询,可以调用它的__toString()方法:
任何查询都有一个对应的“总计查询”。总计查询返回的是源查询的结果集记录的总数。为了获得一个总计查询,可以使用countQuery()方法。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
一旦构建好了查询,就可以调用execute()来编译和运行查询了。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
条件语句是一个很复杂的课题,在选择、更新、删除查询中,都会用到条件语句。因此,我们把它独立出来,单独讲解。与更新和删除查询不同,选择查询有两种类型的条件语句:WHERE语句和HAVING语句。Having语句效果和WHERE语句完全相同,唯一的区别是它使用方法havingCondition()和having(),而不是condition()和where()。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
为了生成一个可以按照任意一列排序的结果集表,可以使用TableSort扩展器,接着添加表头。注意,扩展器会返回一个新的查询对象,从这一点起,你使用的就是这个新的查询对象了。