Zend_db автономный - PullRequest
       4

Zend_db автономный

0 голосов
/ 04 сентября 2011

Я хочу использовать Zend_db, так как Zend Framework - слишком много для моего проекта, но я новичок в этом, правильно ли это делать:

$ 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_Db_Table_Abstract, если я не использую полный Zend Framework, или лучше, например, использовать это:

$ db = Zend_Db:: фабрика (... варианты ...);$ select = new Zend_Db_Select ($ db);

я хочу настроить соединение pdo / mysql на моей странице php начальной загрузки и иметь возможность получить этот экземпляр базы данных в любом классе без запуска нового соединения для выполнениязапросы, но я не уверен, как это сделать, используя Zend_Db_Table_Abstract или Zend_Db_Select, используйте реестр Zend_Registry :: set ('dbAdapter', $ db) или нет, большое спасибо

1 Ответ

0 голосов
/ 04 сентября 2011

Цель Zend_Db_Table_Abstract состоит в том, чтобы вы могли создавать свои собственные классы моделей на основе шаблона проектирования Table Data Gateway.Идея этого шаблона заключается в том, что у вас есть класс, который инкапсулирует все sql, необходимые для взаимодействия с таблицей.Таким образом, предполагается, что вы будете создавать классы моделей, расширяющие Zend_Db_Table_Abstract для каждой таблицы.Если вы собираетесь это сделать, тогда вы захотите вызвать Zend_Db_Table_Abstract :: setDefaultAdapter ($ db) в вашей настройке / начальной загрузке.Последние версии ZF предоставляют в качестве альтернативы быстрый способ получения базовой функциональности без необходимости создания настраиваемого определения класса, просто создав экземпляр Zend_Db_Table:

$userTable = new Zend_Db_Table('users');

Таким образом, ни одно из этого не имеет отношения к MVCчасть платформы, хотя некоторые люди предпочитают использовать Zend_db в качестве основы для соединений и моделей БД, вместо использования более полнофункционального ORM, такого как Doctrine или Propel.

Другой предоставленный вами код просто показывает, что вы делаететакже не нужно использовать Zend_Db_Table_Abstract - вы можете просто настроить экземпляр Zend_Db_Adapter и использовать этот экземпляр для вызова query () или других его методов.

...