Feb 26

Чем больше я работаю над своим первым проектом на работе, тем больше мне хочется в нем поменять и тем больше я жалею о том, что перед началом работы я не прочитал до конца «The Definitive Guide to Symfony» и не изучил плагины для Symfony. Многие из них мне бы помогли намного сократить время разработки и, что самое главное, не думать о том, как красиво реализовать те или иные вещи… И еще одно — если у вас уже есть кусок системы (как это было у меня), который вы собираетесь переписывать с использованием вашего фреймворка (или просто переписывать, потому что код вам не нравиться) — то мой вам совет — потратьте время на то, чтобы спроектировать этот кусок на план вашей новой системы, не бросайтесь сразу всё переписывать (каюсь, я поступил именно так), так как после анализа (который, возможно, займет у вас не один день, и даже не одну неделю), возможно, от предыдущей архитектуры системы не останется и следа.

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

Ну ладно, это я отвлекся. Сегодня хочется рассказать о том, с чего стоит начать при разработке системы с помощью Symfony и каких правил следует придерживаться.

Continue reading »

written by FX Poster \\ tags: , , , ,

Jan 22

То, что мне очень не нравилось в Symfony 1.0, а именно - работа с формами, в следующей версии, которая сейчас находится в активной разработке, должно кардинально поменяться в лучшую сторону. Ну а пока что расскажу о работе с формами в текущей стабильной версии этого замечательного фреймворка.

Работа с формами здесь реализована на основе хелперов и валидаторов, которые напрямую друг с другом не связаны вообще никак. Поподробнее можно почитать в онлайн книге, в главе про формы.

Пример работы:

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

user:
 id:
 login:
   type: varchar(64)
   required: true
   index: unique
 password:
   type: varchar(40)
   required: true
 first_name:
   type: varchar(64)
   required: true
 last_name:
   type: varchar(64)
   required: true
 email:
   type: varchar(128)
   required: true
   index: unique

...

Continue reading »

written by FX Poster \\ tags: , , ,

Dec 25

А в мануалке теперь есть кучка примеров того, что будет в грядущем PHP 5.3.0. Смотрим, например, сюда.

Кстати, этот Late Static Binding может сильно упростить разработку нормального ORM на базе ActiveRecord. Пример:

class AR {
  public static function findOne($where) {
    $sql = 'SELECT * FROM ' . strtolower(__CLASS__) . ' WHERE ' . $where;
    return new self(self::$db->query($sql)->result());
  }
}
сlass User extends AR {
}
User::findOne();

В PHP <= 5.2.5 User::findOne() вернет обьект класса AR (и записи будет выбирать из таблицы ar, что, естественно, нам не подходит). В PHP 5.3 по идее должен уже вернуть User’а с записями из таблицы user.

written by FX Poster \\ tags: ,

May 07

Появились у меня недавно некоторые наметки относительно проверки данных при передаче их в базу данных, да и вообще - Zend Db Table не помешало бы немного подлатать…

За модель в Zend Framework отвечает Zend_Db, а точнее - Zend_Db_Table. Т. е. мы создаем классы, которые соответствуют нашим таблицам в базе данных и работаем с ними. Т. к. ORM полноценной в ближайшем будущем в фреймворке не будет, то я попытаюсь за несколько статей сделать хотя бы некое подобие ORM’а.
Continue reading »

written by FX Poster \\ tags: , ,