logo

额外区块类型 (EBT) - 全新的布局构建器体验❗

额外区块类型 (EBT) - 样式化、可定制的区块类型:幻灯片、标签页、卡片、手风琴等更多类型。内置背景、DOM Box、JavaScript 插件的设置。立即体验布局构建的未来。

演示 EBT 模块 下载 EBT 模块

❗额外段落类型 (EPT) - 全新的 Paragraphs 体验

额外段落类型 (EPT) - 类似的基于 Paragraph 的模块集合。

演示 EPT 模块 滚动

滚动
01/10/2025, by Ivan

查询可以通过用户自定义类来提取为对象。例如,如果我们有一个名为 ExampleClass 的类,下面的查询将返回 exampleClass 类型的对象。

$result = $connection->query("SELECT id, title FROM {example_table}", [], [
  'fetch' => 'ExampleClass',
]);

如果类中有 __construct() 方法,对象会被创建,属性会被添加到对象中,然后调用 __construct() 方法。例如,如果你有以下类和查询:

class ExampleClass {
  function __construct() {
    // 执行一些操作
  }
}

$result = $connection->query("SELECT id, title FROM {example_table}", [], [
  'fetch' => 'ExampleClass',
]);

对象会被创建,属性 id 和 title 会被添加到对象中,然后执行 __construct()。这些事件的顺序与 PHP 中的一个错误(版本低于 5.2)有关。

如果对象中存在 __construct() 方法,并且需要在属性添加到对象之前执行,可以按以下示例操作:

$result = $connection->query("SELECT id, title FROM {example_table}");
foreach ($result->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'ExampleClass') as $record) {
  // 执行一些操作
}

传递给 fetchAll 的参数可以以相同方式使用。PDO::FETCH_CLASS 告诉 fetchAll 将返回的结果集作为属性添加到 ExampleClass 类型的对象中(第二个参数)。PDO::FETCH_PROPS_LATE 告诉 fetchAll 在调用 __construct() 之后再将结果集作为属性添加到对象。