17 存到类中

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

    也可以把查询的结果存放在自定义类的对象中去。例如,如果我们有一个名为ExampleClass的类,下面的查询则会返回类型为exampleClass的对象。

<?php
$result db_query("SELECT id, title FROM {example_table}", array(), array(
  'fetch' => 'ExampleClass',
));
?>

    如果该类拥有构造函数__construct(),那么将会创建相应的对象,并会向对象中添加相应的属性,接着将会调用__construct()方法。例如,如果你有下面的类和查询:

<?php
class exampleClass {
  function __construct() {
    // Do something
  }
}

$result db_query("SELECT id, title FROM {example_table}", array(), array(
  'fetch' => 'ExampleClass',
));
?>

    将会创建相应的对象,并向该对象中添加属idtitle,接着执行__construct()。这些事件的执行顺序,是由低于PHP5.2的PHP版本中的一个bug(http://bugs.php.net/bug.php?id=46139)引起的。

    如果该对象上有一个__construct()方法,并且该方法需要在属性添加到对象上的前面执行,则可以使用下面例子中所给的方法:

<?php
$result db_query("SELECT id, title FROM {example_table}");
foreach ($result->fetchAll(PDO::FETCH_CLASS PDO::FETCH_PROPS_LATE'ExampleClass') as $record) {
  // Do something
}
?>

    传递给fetchAll的参数,也可以原封不动的用在fetch上。PDO::FETCH_CLASS告诉fetchAll获取返回的结果集,并将值作为属性添加到ExampleClass类型(第二个参数)的对象上。PDO::FETCH_PROPS_LATE告诉fetchAll,先调用__construct(),然后再将结果集作为属性添加到对象上。

 


Drupal版本: