Как стать автором
Обновить

Комментарии 12

Небольшие web сайты можно писать, не используя паттерн MVC.

Небольшие — это какие?
Все в кучу свалить?
html / php / sql?

Поэтому при разработке нашего web приложения сразу договоримся об использовании этого паттерна.

Да это никакой не паттерн, это здравый смысл разделить код на уровни.

Если всё писать самому, то необходимо решить множество задач: автозагрузка файлов .php, включающих определение классов, маршрутизация и др.

То есть фреймворки для ниасиляторов языка, для ниасиливших spl_autoload_register()?
Небольшие — это какие?
Все в кучу свалить?
html / php / sql?

Небольшие это те которые не содержат много бизнес логики и не оперируют множеством моделей. Html вообще может не быть. или запросов в базу может не быть. или модель у меня одна. и т. д. и т. п. Код на уровни разделять это действительно здравый смысл, только MVC это всё же паттерн и при этом не единственный.


То есть фреймворки для ниасиляторов языка, для ниасиливших spl_autoload_register()?

Как вы увидели там такой смысл непонятно.

Просто интересно, а зачем сейчас использовать firebase — бизнес так хочет или в учебных целях?

Не firebase, а Firebird, это совершенно разные СУБД. В общем я публикую цикл статей о том, как работать с Firebird использую самые различные технологии. Использовать или нет Firebird при разработке вашего сайта решать вам. Никаких призывов побросать свои СУБД и переходить на Firebird здесь нет. Но уж если потребовалось работать с FB, то неплохо бы с чего-то начать.
Из того что бросилось в глаза

По умолчанию расширение Firebird/Interbase автоматически подтверждает транзакцию после выполнения каждого SQL запроса

это не так, транзакция по умолчанию подтверждается только при закрытии соединения/завершении скрипта либо явно при вызове ibase_commit($dbh)

    ibase_execute($sth, $user[0], $user[1]);
    // Если произошла ошибка, бросаем исключение
    $err_msg = ibase_errmsg();
    if ($err_msg)
      throw new \Exception($err_msg);

функции сообщают об ошибке возвращаемым значением, его и надо анализировать для проверки, а не дергать ibase_errmsg()

Главное проклятие драйверописателей для FB/interbase (не только в PHP) — понимание специфики транзакций и работа с ними.
Умолчательные параметры транзакции подходят для большинства случаев, и менять их параметры требуется очень редко. Дело в том что соединение с базой данных, как и все связанные с ним ресурсы существуют максимум до конца работы PHP скрипта. Даже если вы используете постоянные соединения, то все связанные ресурсы будут освобождены после вызова функции ibase_close.

Имхо, лучше использовать подходящие параметры для каждого случая (чтение данных, изменение данных, построение отчетов), а не использовать параметры по умолчанию. Да это проще, но это плохо. Чем плохо давно разжевано на том же ibase.ru
Спасибо, поправил ошибки, Произвёл трассировку, действительно автокоммита после каждого оператора не происходит. Честно говоря был уверен, что ibase_ функции работают по той же схеме, что и PDO.
Половина статьи о том, что надо использовать PDO…

На дворе 2016 год, просыпайтесь, коллеги!

Этот шаг необязателен для версий PHP 5.3 и выше, так как для работы PDO больше не требуются DLL

Это вы для кого пишете? Послание в прошлое?
Нет смысл статьи не в этом. Про ibase_ и PDO обзор был дан лишь для того, чтобы люди понимали как работать с Firebird на низком уровне. Да и PDO драйвере для FB есть свои баги, которые сейчас правятся.
А можете подсказать, что может быть за ошибка, когда при подключении к базе вываливается «exception 21»?
$conn="firebird:dbname=192.168.1.1:C:/Base/db/db.fdb;charset=utf8";
$dbh = new \PDO($conn, "sysdba", "passw", [\PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);

Подключаюсь с веб-севера на Windows7 к серверу Firebird на Windows XP.
Нужно внимательней читать доки:
http://php.net/manual/en/pdo.errorinfo.php

#define SQLITE_MISUSE      21   /* Library used incorrectly */
Наверное проблема в том, что WinXP(Firebird) — 32bit, а Win7 — 64bit(Apache/php). Я пытался подсунуть версию библиотеки для x86_64, но при этом пишет, что драйвер не найден.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории