2011-09-04 56 views
0

我想使用Zend_Db的獨立COS Zend框架是太多我的項目,但我是新有了它, 是正確的做到這一點:Zend_Db的獨立

$ pdoParams =陣列(PDO :: MYSQL_ATTR_INIT_COMMAND =>'SET NAMES UTF8;');

$params = array(
     'host' => 'localhost', 
     'username' => 'ss_fraat', 
     'password' => 'jos10', 
     'dbname' => '_a2hDB', 
     'driver_options' => $pdoParams 
    ); 

    try { 
     $db = Zend_Db::factory('PDO_MYSQL', $params); 
     //set default adapter 
     Zend_Db_Table_Abstract::setDefaultAdapter($db); 
    } catch (Exception $e) { 
     exit($e->getMessage()); 
    } 

    //save Db in registry for later use 
    Zend_Registry::set('dbAdapter', $db); 

然後在任何類做到這一點:

$db = Zend_Registry::get('db'); 
/** quote to avoid sql injection */ 
$date = $db->quote('1980-01-01'); 
$sql = 'SELECT * FROM product WHERE name = ' . $date; 
$result = $db->query($sql); 
$db->query(); //run a query 

我真的需要做到這一點

Zend_Db_Table_Abstract::setDefaultAdapter($db); 

我從一個網站的代碼, 就是用它必要Zend_Db_Table_Abstract如果我沒有使用完整的zend框架, 或者比較好的例子是使用這個:

$ db = Zend_Db :: factory(... options ...); $ select = new Zend_Db_Select($ db);

我想要的是在我的引導PHP頁面中設置一個pdo/mysql連接,並且能夠在任何類中獲得該數據庫實例,而無需啓動新的連接來執行查詢,但我不知道如何使用該功能Zend_Db_Table_Abstract或Zend_Db_Select對象使用註冊表要是Zend_Registry ::集(「將對DBAdapter」,$ DB)或不 非常感謝

+0

請參閱http://stackoverflow.com/questions/4840941/zend-db-without-zend-framework/4841608#4841608 – atherdon

回答

0

Zend_Db_Table_Abstract的目的是這樣就可以在表數據網關設計模式基礎創建自己的模型類。這種模式的想法是,你有一個類封裝了所有需要與表連接的sql。所以假設你將創建模型類,爲每個表擴展Zend_Db_Table_Abstract。如果你打算這樣做,那麼你會想在你的setup/bootstrap中調用Zend_Db_Table_Abstract :: setDefaultAdapter($ db)。 ZF的最新版本提供了作爲替代的獲得基本功能的快捷方式,而不必僅通過實例化Zend_Db_Table類來創建一個自定義的類定義:

$userTable = new Zend_Db_Table('users'); 

總之,這一切都不特別具有的MVC部分做該框架,雖然有些人選擇使用Zend_db作爲數據庫連接和模型的基礎,而不是使用像Doctrine或Propel這樣功能更全面的ORM。

您提供的其他代碼只是簡單地說明您不需要使用Zend_Db_Table_Abstract - 您可以簡單地設置Zend_Db_Adapter的實例並使用該實例調用query()或其他方法。