CodeIgniter + Zend Framework + Doctrine

Jan 09, 2009 05:29


Последний раз вплотную на php я что-то делал два года назад. За это время технологии прилично продвинулись вперед. Тогда вообщем-то было все тоже самое, но валилось из-за сырости, требовало постоянное ковырения в php.ini, конфиге апача и phpMyAdmin. А самое плохое - были завязаны сами на себе.

Сейчас же можно смотреть вебдванольненькие документации, с хорошим поиском и хоть каким-то количеством готовых решений.

А еще, не нужно лезть в phpMyAdmin, с помощью Doctrine можно запросто написать всю структуру в YAML файлах. А она сама запишет в БД со всеми зависимостями и индексами, да еще модели сгенерирует в специальную папочку.

CodeIgniter задаст легкую структуру приложения, не нужно выдумывать расположение файлов, шаблонные движки, писать тыщуодну MVC. А модели будут из Доктрины, он не против.

А если нужна авторизация, OpenId и еще что-нибуть такое стандартное, но хочется отлаженное и без копания в чужом коде - берем Zend Framework с его коллекцией классов. Он вообще изначально проектировался так, чтобы все компоненты не зависели друг от друга, а интегрировались.

На самом деле, самым без проблемным оказался CodeIgniter. Убрал везде index.html, перенес все в директорию cgi-bin и наслаждаюсь.

Потом добавил Doctrine. И час искал тот метод, который генерит таблички без использования консоли.

Doctrine::createTablesFromModels(APPPATH . 'models');

И тут как раз оказалось, что ей нужен PDO. Он был установлен у хостера. Установлен сам по себе, без драйверов :) Пришлось лезть в консоль. Собрал. Т.е. собрал все модули которые нужны. Переписал php.ini. Заработало. Очень понравилось. Единственное, в типах столбцов всегда нужно указывать что они NOT NULL.

--- Articles: columns: id: primary: true autoincrement: true type: integer(4) notnull: true url: { type: string(255), notnull: true } text: { type: string, notnull: true }

А вот Zend'а, моя сборочка встретила холодно.

Zend_Loader::registerAutoload('Zend_Loader');

Тут php бросался варнингами. Оказалось где-то в самом конце CodeIgniter проверял if (class_exists('CI_DB') AND isset($CI->db)), что вызывало у зенда стойкое желание подгрузить класс CI_DB. В сообществе об этом знают, но не используют. Убрал автолоад и стал подгружать вручную, на четыре строчки оказалось больше.

И нужно мне подсоединить OpenId. Там проблемы возникли у всех. CodeIgniter ругался на роутинг (у него инеграция с PHP4, но специфичная форма роутинга, которую удалось запустить только созданием хука), Zend отказывается принимать жж. А Доктрину не понятно как сюда вообще вписывать.

Вывод: эти технологии рассчитаны на будущее. Когда у каждого будет свой выделенный сервер с PHP7. И YAML будут проходить в школе.

zend framework, doctrine, codeigniter, php

Previous post Next post
Up