當我們在開發項目時..大家都會遇到一個問題就是:數據庫的編碼問題.當然我們不用Zend Framework做為項目開發的框架時..我們可以很快,很容易搞定這個小問題..但是當我們要使用Zend Framewok開發項目時..我們可能一時會不知道如何解決這個小問題..比如我就是這樣的人..在開發這個博客前..真的不知道如何設數據庫編碼..? 現在我總結一下我的經驗吧..當然也是在網絡上找來的答案…
設定數據庫編碼問題很好解決.代碼如下:
<?php $dbAdapter=Zend_Db::factory($config->general->db->adapter,
$config->general->db->toArray());
$dbAdapter->query("SET NAMES utf8"); ?>
當我們搞定這個問題后..我們可能要給數據庫設定數據表的前綴..這個時候..可能有的朋友會有不同的方式..之前我用一個笨方法也搞定了..但是現在參考網絡上一篇文章,就有點啟發,就把我原來的方法給去了,改進了一下.步驟如下所示:
第一:我的項目目錄安排如下圖所示:(請注意我畫紅線的地方!)
第二:敲定confg.ini數據庫配置文件我的配置文件如下:
[general]
db.adapter=PDO_MYSQL
db.host=localhost
db.username=root
db.password=
db.dbname=unblog
db.charset=utf8
db.prefix=unblog_
第三:打開網站的入口文件index.php,把里面讀取config.ini配置文件的方法改成如下代碼:
//config database connect
$config=new Zend_Config_Ini('./app/config/config.ini',null, true);
Zend_Registry::set('config',$config);
$dbAdapter=Zend_Db::factory($config->general->db->adapter,
$config->general->db->toArray());
$dbAdapter->query("SET NAMES {$config->general->db->charset}");
Zend_Db_Table::setDefaultAdapter($dbAdapter);
Zend_Registry::set('dbAdapter',$dbAdapter);
Zend_Registry::set('dbprefix',$config->general->db->prefix);
?>
第四:在library/Custom/Model/增加一個Db.php 此文件代碼如下.. 它是繼承Zend_Db_Table這個類的.它的代碼如下:
class Custom_Model_DbextendsZend_Db_Table
{
public function __construct()
{
$dbprefix=Zend_Registry::get('dbprefix');
$this->_name=$dbprefix.$this->_name;
parent::__construct();
}
}
最后:就是在我們的網站的每個Models里,數據庫的操作類繼承Custom_Model_Db,而不是繼續原來的
Zend_Db_Table就可以搞定這一切
參與代碼如下:
class Article extends Custom_Model_Db
{
protected $_name ="article";
protected $_primary ='id';
}
?>
希望大家一起交流...好累...睡覺了...晚安...