jinya/pdox

该包已被弃用,不再维护。未建议替代包。

Jinya PDOx 是一个基于 PHP 标准PDO构建的简单对象映射器。

0.10.1 2023-09-27 00:20 UTC

This package is auto-updated.

Last update: 2024-01-16 01:10:33 UTC


README

永久链接 布局
index.html 默认

PDOx

PDOx 是一个小型PDO扩展,它允许开发人员通过执行单个查询来将表映射到所需的对象。为此,它使用原生PDO或laminas-hydrator。

安装

只需在您的项目中运行 composer require jinya/pdox

使用方法

PDOx 除了默认的PDO方法外,还包含三个方法。

$pdo->fetchObject($query, $prototype, $parameters, $strategies)

此方法允许您从查询中检索单个对象并将结果注入到类型为 $prototype 的类中。一个示例调用可能如下所示

<?php
use Laminas\Hydrator\Strategy\BooleanStrategy;

require_once __DIR__ . '/vendor/autoload.php';

$pdox = new Jinya\PDOx\PDOx('sqlite::memory:');
$result = $pdox->fetchObject('SELECT * FROM table_test WHERE id = ?', new MyObject(), [1], [
    'active' => new BooleanStrategy('1','0'),
]);
var_dump($result);

上面的代码非常简单,第一个参数您给它查询,第二个参数是PDOx应该注入到的对象的新实例,第三个是查询的参数,最后是策略。策略是laminas hydrator的组件,您可以在这里了解更多信息。

$pdo->fetchIterator($query, $prototype, $parameters, $strategies)

此方法允许您从查询中检索对象迭代器并将结果注入到类型为 $prototype 的类中。一个示例调用可能如下所示

<?php
use Laminas\Hydrator\Strategy\BooleanStrategy;

require_once __DIR__ . '/vendor/autoload.php';

$pdox = new Jinya\PDOx\PDOx('sqlite::memory:');
$result = $pdox->fetchIterator('SELECT * FROM table_test WHERE id = ?', new MyObject(), [1], [
    'active' => new BooleanStrategy('1','0'),
]);
var_dump($result);

fetchIteratorfetchObject 的方法调用基本上相同。您只需替换方法名,PDOx 就会为您完成剩余的工作。

$pdo->fetchArray($query, $prototype, $parameters, $strategies)

此方法允许您从查询中检索对象迭代器并将结果注入到类型为 $prototype 的类中。一个示例调用可能如下所示

<?php
use Laminas\Hydrator\Strategy\BooleanStrategy;

require_once __DIR__ . '/vendor/autoload.php';

$pdox = new Jinya\PDOx\PDOx('sqlite::memory:');
$result = $pdox->fetchArray('SELECT * FROM table_test WHERE id = ?', new MyObject(), [1], [
    'active' => new BooleanStrategy('1','0'),
]);
var_dump($result);

fetchArrayfetchIterator 的方法调用基本上相同。您只需替换方法名,PDOx 就会为您完成剩余的工作。

配置

PDOx 引入了两个新的PDO选项字段。这些是通过构造函数传入的。使用这些新选项,您可以控制PDOx是否应该转换字段名称以及如何处理空结果,通过返回 null 或抛出异常。

PDOx::PDOX_NAMING_UNDERSCORE_TO_CAMELCASE

可能的值: truefalse

目的:控制是否将数据库中的下划线大小写转换为PHP中的驼峰式大小写

PDOx::PDOX_NO_RESULT_BEHAVIOR

可能的值:PDOx::PDOX_NO_RESULT_BEHAVIOR_NULLPDOx::PDOX_NO_RESULT_BEHAVIOR_EXCEPTION

用途:控制PDOx在fetchObject中处理无结果的方式

发现了一个错误吗?

如果您发现了一个错误,请随意在Github或我们的Taiga实例上创建一个issue:https://taiga.imanuel.dev/project/pdox/

许可证

像所有其他Jinya项目一样,PDOx在MIT许可证下分发。