В чем преимущество использования моделей Zend_Db над mysqli? - PullRequest
0 голосов
/ 30 октября 2011

Я только начал использовать ZF, и есть несколько очень удобных библиотек, которые экономят мне много времени, но я не вижу преимущества в использовании их класса Zend_DB по сравнению с mysqli. Мне не нужен PDO, так как я всегда буду использовать MySQL в качестве СУБД. И действительно, как часто вы все-таки меняете СУБД в середине проекта?

И мне очень удобно с SQL, поэтому мне не нужна их абстракция, которая просто смущает меня.

Так в чем же преимущество этого кода mysqli в моих конструкторах классов, а затем просто в SQL-запросах, когда они мне нужны?

require_once("database_details.php");
$this->_mysql=new mysqli(DBSERVERHOST,DBUSERNAME,DBPASSWORD,DBNAME);

Ответы [ 2 ]

2 голосов
/ 30 октября 2011

Я не ZF, но голые mysqli просто безобразны.Каков ваш код, чтобы получить несколько строк для заполнения шаблона?
Давайте предположим, что это так же печально, как

$query = "SELECT * FROM myCity WHERE Name=? AND CountryCode=? AND District=?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("sss", $val1, $val2, $val3);
$stmt->execute();
$data = array();
if ($result = $mysqli->query($query)) {
while ($row = $result->fetch_row()) {
    $data[] = $row;
}

(это просто простой пример из руководства, без обязательных вещей, таких как обработка ошибок)

Хотя с некоторой библиотекой вы можете сделать это как

$data=$db->getArr("SELECT * FROM myCity WHERE Name=? AND CountryCode=? AND District=?"
                   $val1, $val2, $val3);

, просто посчитайте количество запросов в вашем обычном скрипте и почувствуйте разницу.

Также обратите внимание, что у вас есть драгоценныйSQL не поврежден!

1 голос
/ 30 октября 2011

Есть много преимуществ. Я не знаю их всех, но два из них просто выдающиеся:

1) Зависимость адаптера / независимость кода Неважно, какую базу данных вы используете - код ваших запросов НИКОГДА не меняется.

$db->select()->where('a=?', $b)->order('C DESC')->limit(5);

Неважно, является ли ваш адаптер MySQL, PGSQL, MSSQL и т. Д. Я думаю, что даже некоторые базы данных NoSQL поддерживаются с теми же форматами запросов Zend

2) Кеширование При использовании библиотеки для запросов - особенно с Zend или Doctrine (комбинируемой!) - кэширование ваших запросов к БД - это очень просто. Сделайте это вручную для каждого из ваших запросов, и вы обречены на повторный запуск кода: P

3) Читабельность Лично я просто чувствую, что использование библиотеки (может быть и вашей) тоже имеет много преимуществ для удобства чтения

...