安装和配置

YII 当前有两个主要版本:1.1 和 2.0。 安装 YII 神通方言也分为两个版本安装。

安装要求

PHP 版本要求:PHP5.3-5.6, PHP7.0-7.2, PHP7.3, PHP7.4, PHP8.0

警告

YII 1.1 要求 PHP 5.1.0 或更高版本, YII 2 要求 PHP 5.4.0 或以上版本。
因为神通方言版 YII 依赖 PDO_ACI 驱动,而目前神通 PDO_ACI 支持的 PHP 版本为 PHP5.3-5.6 和 PHP7.0-7.2, PHP7.3, PHP7.4, PHP8.0, 所以目前神通方言版 YII 支持的 PHP 版本要与 PDO_ACI 一致。

版本支持

目前神通适配了主流的 YII 几个版本,列表如下

  • YII 1.1
  • YII 2.0

PDO_ACI 验证

安装神通方言 YII 之前,先检查 PDO_ACI 是否已加载到当前的 PHP 运行时环境中。

执行命令 php -m | grep PDO_ACI, 如果输出项查询到 PDO_ACI,那么当前PHP运行时已加载 PDO_ACI; 否则需要正确加载 PDO_ACI 扩展库。

root@deb10:~# php -m | grep PDO_ACI
PHP Warning:  Module 'PDO_ACI' already loaded in Unknown on line 0
Warning: Module 'PDO_ACI' already loaded in Unknown on line 0
PDO_ACI

加载 PDO_ACI 扩展库详细内容请参考 PDO_ACI 开发手册 -> 安装与配置

YII 1.1 安装

安装配置

为了让 YII 框架支持神通数据库驱动,需要作必要的配置和源文件拷贝.

在文件 framework/YiiBase.php 内追加一下内容

private static $_coreClasses=array(

    ...
    // 追加下面代码

    'CAciColumnSchema' => '/db/schema/aci/CAciColumnSchema.php',
    'CAciCommandBuilder' => '/db/schema/aci/CAciCommandBuilder.php',
    'CAciSchema' => '/db/schema/aci/CAciSchema.php',
    'CAciTableSchema' => '/db/schema/aci/CAciTableSchema.php',
);

拷贝YII1.1目录下 aci 目录到项目目录 framework/db/schema/

cp -r aci framework/db/schema/

YII1.1 神通方言文件内容如下

yii1.1/
├── aci
│   ├── CAciColumnSchema.php
│   ├── CAciCommandBuilder.php
│   ├── CAciSchema.php
│   └── CAciTableSchema.php
├── README.md
└── test
    ├── activerecord.php
    ├── connect.php
    ├── querybuilder.php
    └── query.php

2 directories, 9 files

连接配置信息

在项目配置文件中配置连接信息

'db'=>array(
        'connectionString' => 'aci:dbname=127.0.0.1:2003/osrdb',
        'username' => 'sysdba',
        'password' => '',
    ),

可以创建一个连接 Connection

$dsn = "aci:dbname=127.0.0.1:2003/osrdb";
$username = "sysdba";
$password = "szoscar55";

$connection=new CDbConnection($dsn,$username,$password);

$connection->active=true;

测试

拷贝目录 test 到项目根目录下

cp test /yourpath/

执行文件测试

php file.php

YII 2 安装

安装配置

为了让 YII 框架支持神通数据库驱动,需要作必要的配置和源文件拷贝.

在文件 vendor/yiisoft/yii2/classes.php 下追加以下内容

return [

...
// 追加下面代码

'yii\db\aci\ColumnSchemaBuilder' => YII2_PATH . '/db/aci/ColumnSchemaBuilder.php',
'yii\db\aci\Command' => YII2_PATH . '/db/aci/Command.php',
'yii\db\aci\QueryBuilder' => YII2_PATH . '/db/aci/QueryBuilder.php',
'yii\db\aci\Schema' => YII2_PATH . '/db/aci/Schema.php',
'yii\db\aci\conditions\InConditionBuilder' => YII2_PATH . '/db/aci/conditions/InConditionBuilder.php',
'yii\db\aci\conditions\LikeConditionBuilder' => YII2_PATH . '/db/aci/conditions/LikeConditionBuilder.php',

];

在文件 vendor/yiisoft/yii2/db/Connection.php 下追加以下内容

public $schemaMap = [
    ... //省略
    // 追加该行代码
    'aci' => 'yii\db\aci\Schema', // Oscar driver
];

public $commandMap = [
    ... //省略
    // 追加该行代码
    'aci' => 'yii\db\aci\Command', // Oscar driver
];

拷贝神通方言 YII2 目录下 aci 目录到项目目录 vendor/yiisoft/yii2/db/

cp -r aci vendor/yiisoft/yii2/db/

神通方言 YII2 文件内容如下

yii2/
├── aci
│   ├── ColumnSchemaBuilder.php
│   ├── Command.php
│   ├── conditions
│   │   ├── InConditionBuilder.php
│   │   └── LikeConditionBuilder.php
│   ├── QueryBuilder.php
│   └── Schema.php
├── README.md
└── test
    ├── connect.php
    ├── pdo.php
    ├── querybuilder.php
    ├── query.php
    ├── seq.php
    ├── sql.sql
    └── table.php

3 directories, 14 files

连接配置信息

在项目配置文件中配置db.php 连接信息

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'aci:dbname=127.0.0.1:2003/osrdb',
    'username' => 'sysdba',
    'password' => 'szoscar55',
    'charset' => 'utf8',
    ...
];

接下来可以创建一个连接 Connection

$connection = new \yii\db\Connection([
    'dsn' => 'aci:dbname=127.0.0.1:2003/osrdb',
    'username' => 'sysdba',
    'password' => 'szoscar55',
    'charset' => 'utf8',
]);
$connection->open();

测试

拷贝目录 test 到项目根目录下

cp test /yourpath/

执行文件测试

php file.php