第四章:创建初始应用---连接数据库(YII)

测试数据库
在第三章中,我们已经了解了Yii提供的测试框架。所以,我们知道在protected/tests/unit/下添加一个测试文件,让我们在这个目录下创建一个简单的测试数据库连接的测试文件DbTest.php。并添加如下内容:
<?php  
class DbTest extends CTestCase{
function testConnection()
{
     $this->assertTrue(true);
}
}
?>

在这里,我们添加了一个非常普通的测试代码,assertTrue()方法是PHPUnit中定义的,断言是如果参数为true将通过,false 则失败。因此,在这种情况下,它传的是true所以这个测试会通过。我们编写测试文件做是为了确保我们新的应用程序工作正常。进入测试目录,并执行这个新的测试:

如果由于某种原因,在你的系统测试失败,你可能需要修改protected/tests/bootstrap.php中的变量$yiit正确指向your/YiiRoot/yiit.php。

相信在新建的TrackStar应用程序中测试文件已经可以运行了,下面我们可以测试一个数据库连接。
修改testConnection方法中的assertTrue(true)语句为如下代码:
$this->assertNotEquals(NULL, Yii::app()->db);

这个测试是假设应用程序已经配置了数据库连接组件db。(后面我们将会讨论更多关于应用程序组件问题)。该测式断言,当应用程序与db连接时,其结果不为空值。事实上,自动创建的应用程序已经使用了一个数据库,使用yiic工具生成的应用程序为我们配置了一个SQLite数据库。你可以查看protected/config/main.php文件,大约在中间部份有如下声明:
'db'=>array(
     'connectionString' =>
     'sqlite:'.dirname(__FILE__).'/../data/yiibook.db',
),


Yii和数据库
Yii数据访问对象(DAO)是建立在PHP数据对象(PDO)扩展(http://php.net/pdo)基础之上。应用程序使用Yii中的DAO可以很容易地切换使用不同的DBMS。要建立一个支持DBMS的连接,可以简单的实例化CDbConnection类:
$connection=new CDbConnection($dsn,$username,$password);

这里$dsn的变量的格式取决于具体被使用程序所采用的PDO驱动程序。一些常见的格式包括:
• SQLite:sqlite:/path/to/dbfile
• MySQL:mysql:host=localhost;dbname=testdb
• PostgreSQL:pgsql:host=localhost;port=5432;dbname=testdb
• SQL Server:mssql:host=localhost;dbname=testdb
• Oracle:oci:dbname=//localhost:1521/testdb



应用程序的配置文件
当应用程序实例被创建时初始化它的属性,这个主应用程序的配置文件位于/protected/config/main.php。

配置Mysql数据库文件
'db'=>array(
'connectionString' => 'mysql:host=127.0.0.1;dbname=yiitest',
'emulatePrepare' => true,
'username' => 'your_db_user_name',
'password' => 'your_db_password',
'charset' => 'utf8',
),
emulatePrepare=>true这个配置设置一个PDO属性(PDO::ATTR_EMULATE_PREPARES) 为true,建议如你使用PHP5.1.3或更高版本。

其中一个很大的好处是从现在起可以使用这个应用组件,我们可以参考数据库连接作为Yii主程序的一个属性Yii:app()->db 可以使用在我们应用程序中的任何位置。同样,我们可以将任何组件的配置定义在配置文件中。

你可能感兴趣的:(第四章:创建初始应用---连接数据库(YII))