pan-roman/ifx4dd-plus

Informix Platform for Doctrine DBAL

1.1.3 2017-11-30 12:32 UTC

README

Informix Platform for Doctrine DBAL 为 Doctrine 的数据库抽象层 Doctrine\DBAL 提供了对 Informix 的支持。

支持的 DBAL 版本

支持的 Informix 版本

已在 Informix Dynamic Server 版本 11.70 和 12.10 上测试(目前尚未在 11.50 上测试,但应该仍然可以使用)。

安装

如果您还没有 PHP 的 PDO_INFORMIX 扩展,则需要安装它(请参阅 PDO_INFORMIX),在继续之前确保扩展正常工作,您可以使用以下示例进行快速连接测试到您的 Informix 服务器

    <?php

    $dsn = 'informix:'
        . 'host=hosttest1;'
        . 'server=test1tcp;'
        . 'database=test_database;'
        . 'protocol=onsoctcp;'
        . 'service=50000;';

    $user = 'your_user';
    $password = 'your_password';

    $con = new PDO($dsn, $user, $password);

    if ($con) {
      echo "The connection was successfully established\n";
    }

您还需要 composer 来安装所有依赖项,如果您还没有安装它,请先安装。

从仓库安装

下载 Informix Platform for Doctrine DBAL 的代码或使用 git 进行克隆 git clone https://github.com/josemalonsom/Ifx4dd.git。移动到您有源代码的目录,并使用 composer 安装依赖项

    $ cd Ifx4dd/
    $ composer install

它将在 vendor 目录下安装 Doctrine\DBAL,并创建一个 autoloader 类,您可以在 vendor/autoload.php 文件中找到它。autoloader 将首先添加 Informix Platform 目录,这样您就可以使用 DBAL 类的 Informix Platform 特定版本。

使用 composer 安装

简单地执行

    composer require "josemalonsom/ifx4dd:dev-master"

它将在 vendor 目录下安装库。

与 Informix 建立连接

如果您没有 DBAL 的经验,请首先阅读其文档 Doctrine\DBAL 文档

要创建连接,您可以使用与 Informix Platform 一起提供的 Doctrine\DBAL DriverManager 的修改版本,或者您可以使用 Doctrine\DBAL 的原始 DriverManager 类,在这种情况下,您需要在连接参数中指定要使用的驱动类。

使用修改后的 DriverManager 创建连接

Ifx4dd 伴随一个修改过的 DriverManager 类,该类将 pdo_informix 添加为可用的驱动之一。

在这种情况下,您需要告诉 composer 首先加载 ifx4dd 目录树中的类(如果您已通过 ifx4dd 的 composer.json 安装 ifx4dd,则不需要此操作,因为 ifx4dd 目录已添加到 autoloader 中)。

    <?php

    // Gets the autoloader
    $classLoader = require_once 'vendor/autoload.php';

    // Adds the ifx4dd directory in first place to the
    // Doctrine\DBAL namespace
    $classLoader->add(
        'Doctrine\\DBAL\\',
        'vendor/josemalonsom/ifx4dd/lib',
        true
    );

    use Doctrine\DBAL\DriverManager;

    $connectionParams = array(
        'driver'       => 'pdo_informix',
        'host'         => 'hosttest1',
        'port'         => '50000',
        'protocol'     => 'onsoctcp',
        'server'       => 'test1tcp',
        'dbname'       => 'test_database',
        'user'         => 'user',
        'password'     => 'password',
        'db_locale'     => 'ru_RU.1251', // optional
        'client_locale'     => 'ru_RU.1251', // optional
    );

    $connection = DriverManager::getConnection($connectionParams);

使用原始 DriverManager 创建连接

如果您想使用与 DBAL 一起提供的 'Doctrine\DBAL\DriverManager' 类,您需要在连接参数中指定要使用的驱动类,如以下示例所示

    <?php

    require_once 'vendor/autoload.php';

    use Doctrine\DBAL\DriverManager;

    $connectionParams = array(
        'driverClass'  => '\Doctrine\DBAL\Driver\PDOInformix\Driver',
        'host'         => 'hosttest1',
        'port'         => '50000',
        'protocol'     => 'onsoctcp',
        'server'       => 'test1tcp',
        'dbname'       => 'test_database',
        'user'         => 'user',
        'password'     => 'password',
        'db_locale'     => 'ru_RU.1251', // optional
        'client_locale'     => 'ru_RU.1251', // optional
    );

    $connection = DriverManager::getConnection($connectionParams);

使用 URL 创建连接

自 DBAL 2.5 以来,使用 URL 创建连接成为可能(注意,在这种情况下,您必须使用 ifx4dd DriverManager 版本)。

    <?php

    $classLoader = require_once 'vendor/autoload.php';

    $classLoader->add(
        'Doctrine\\DBAL\\',
        'vendor/josemalonsom/ifx4dd/lib',
        true
    );

    use Doctrine\DBAL\DriverManager;

    $connection = DriverManager::getConnection(array(
        'url' => 'informix://user:password@hosttest1:50000/test_database?protocol=onsoctcp&server=test1tcp'
    ));

请参阅 DBAL 文档以获取更多信息: https://github.com/doctrine/dbal/blob/2.5/docs/en/reference/configuration.rst

分隔标识符

DBAL 使用分隔标识符,因此您需要在您的 Informix 环境中启用它,请参阅 启用分隔标识符

其他文档