October 20, 2007 at 2:51 pm
· CakePHP
Как я уже писал, я люблю выносить обработку данных в модели. При этом у меня часто получаются модели со схожими функциями, как в одном проекте так и в разных. А меня очень удручает, когда надо писать один и тот же код по несколько раз, а от копирования кода меня просто передёргивает, потому что я уже вижу как через полгода буду себя проклинать. До CakePHP я в таких случаях просто создавал общего потомка и там реализовал общую функциональность. Недостаток этого метода – это то, что в PHP можно наследовать можно только один класс.
К счастью, разработчики CakePHP придумали как удобнее выносить одинаковую функциональность из моделей. Эта возможность появилась в CakePHP 1.2 и называется behaviors.
Читать полностью >>
Permalink
October 19, 2007 at 9:04 pm
· CakePHP, Модели
Мне понравилось тестировать как можно больше всего в CakePHP. О том как тестировать компоненты, я уже писал, теперь пришло время моделей.
В поисках подходящего the fucking manual я набрёл на Testing Models with CakePHP 1.2 test suite на bakery.cakephp.org.
И всё очень хорошо расписано, но, блин, не работает и всё. Поэтому не читайте то, что там написано. Я тщательно изучив исходники методом научного тыка сделал так, чтобы всё работало.
Читать полностью >>
Permalink
October 18, 2007 at 8:12 am
· CakePHP, Куски кода
В CakePHP 1.2 появилось очень много интересных вещей, которых так не хватало в 1.1. Но что теперь не хватает новой версии – это документации. Конечно, можно сказать, что ведь это бета и что надо подождать релиза, но ведь программировать надо уже сейчас. Иногда запутываешься в исходниках и хочется, чтобы кто-то объяснил как же оно работает.
Команда разработчиков CakePHP работает над новой документацией, но почему то не хочет выкладывать её в открытый доступ как исходники альфа-версий CakePHP 1.2. Я слышал, что производительность PHP можно улучшить на 500%, но Zend не делает этого из-за того, что тогда сократятся продажи Zend Accelerator. Может и разработчики CakePHP тоже думают, что так они больше заработают на консалтинге?
В любом случае, они однажды нечаянно выложили бета-версию документации по новой версии CakePHP в открытый доступ и куча людей её скачало. Я добавил к ней ещё 2 файла (pdf с cakephp.org, и jpg с какого-то блога), которые помогают лучше понять как оно работает.
Качайте:
Документация по CakePHP 1.2
UPDATE 26 Oct: Документация появилась в открытом доступе на http://tempdocs.cakephp.org/
Permalink
October 17, 2007 at 10:09 pm
· Куски кода
Если часто надо сортировать массив по разным полям, то вручную лень писать callback-функции. А иногда надо сортировать ещё по нескольким полям. Тогда можно запутаться и наделать ошибок.
Кстати, если кто-то не понял, что я такое написал, идите на php.net/uasort и читайте как PHP способствует деградации программистов, потому что теперь почти никто не напишет сам 5 разных способов сортировки массива. В комментариях к документации я нашёл интересную функцию, которую немного доработал.
Читать полностью >>
Permalink
October 17, 2007 at 12:22 pm
· CakePHP, Helpers, Куски кода
Как вы делаете отладку? В запутанных случаях я использую Zend Debugger, а в простых случаях пишу pr($variable).
Прочитав Ярослава, я вдруг осознал насколько удобно было бы не мусорить окно браузера, а красиво выводить отладочные сообщения в Firebug. Особенно приятно туда выводить сложные объекты и большие массивы так как Firebug позволяет удобно такие вещи просматривать.
Но реализация от Ярослава мне не подходит.
Читать полностью >>
Permalink
October 15, 2007 at 10:24 am
· CakePHP, Компоненты
Google – классная поисковая система, но почему то они закрыли доступ к поиску в нём через SOAP. Как говорила в далёком детстве школьная учительница английского “Shame on you”, ведь даже у Yandex есть Yandex.XML. Мы же не спамеры, нам 1000 поисков в день с головой достаточно.
Но, пока можно искать через браузер, можно искать через Browser 
Попробуем применить наш компонент в боевых условиях.
Читать полностью >>
Permalink
October 14, 2007 at 4:36 pm
· CakePHP, Компоненты
Мне часто приходится обрабатывать информацию с других сайтов и наконец я решил написать свой компонент Browser.
Функциональные возможности
- Корректно разделяет header и body
- Может кешировать запросы
- Может отправлять POST-запросы
- Может работать через proxy
- Поддерживает cookies
- Может автоматически вводить имя пользователя и пароль
- Автоматически подставляет referer с прошлой страницы (можно установить свой)
- Подставляет нормальный UserAgent, чтобы сайты не думали, что это робот
Читать полностью >>
Permalink
October 13, 2007 at 11:31 am
· CakePHP, Компоненты
Проникшись идеей Test-Driven Development, я решил наконец делать тесты для новых проектов. Предлагаю написать компонент Browser, на котором посмотрим как тестируются компоненты.
Читать полностью >>
Permalink
October 12, 2007 at 12:58 pm
· Программирование
Лет 7 назад я думал, что тестирование – это когда берётся программа и по очереди нажимаются все кнопочки и записывается результат. Для многих, к сожалению, это до сих пор так. Сейчас я понимаю, что основа тестирования – это классные модульные тесты.
Модульные тесты разделяют программу на части и доказывают, что каждая из этих частей работает. А это увеличивает вероятность работоспособности программы в целом
.
Читать полностью >>
Permalink