zend_db独立

时间:2011-09-04 06:38:20

标签: zend-db

我想使用zend_db独立的cos zend框架对于我的项目来说太多了,但我是新手, 这样做是否正确:

  

$ pdoParams = array(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框架,是否有必要使用Zend_Db_Table_Abstract, 或者更好的例如使用它:

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

我想要的是在我的bootstrap php页面中设置一个pdo / mysql连接,并且能够在任何类中获取该数据库实例而无需启动新的连接来执行查询但我不知道如何使用Zend_Db_Table_Abstract或Zend_Db_Select使用注册表Zend_Registry :: set('dbAdapter',$ db)或不 非常感谢

1 个答案:

答案 0 :(得分:0)

Zend_Db_Table_Abstract的目的是让您可以基于Table Data Gateway设计模式创建自己的模型类。这种模式的想法是你有一个类,它封装了与表连接所需的所有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()或其他方法。