Проходя мимо заметил обсуждение перевода статьи, который уже не доступен по указанному адресу и решил сам набросать перевод, который и представляю:
Фреймворк Catalyst лучше чем любой другой фреймворк, и уж точно лучше любого фреймворка на PHP, правда зависит это от того, что для вас означает «лучше».
Примечание переводчика: «Фреймворк» - как описано в Wiki: “программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта”.
Catalyst очень гибкий, даже более гибкий чем Ruby on Rails, более гибкий чем фреймворки на Python, и так же более гибкий чем фреймворки на PHP. Catalyst позволяет использовать любую систему шаблонизации, больше чем одну, или вовсе не использовать шаблоны. Catalyst позволяет использовать любой ORM (объектно-ориентированная структура БД), используемый в Perl, или не использовать ORM вообще. Catalyst позволяет использовать автоматизированную обработку web-форм, но может функционировать и без нее.
Многие разработчики не любят излишнюю гибкость, считая, что это усложнит понимание кода для неопытных программистов. Perl и Catalyst позволяют разработчикам быть очень продуктивными, но ценой тому будет более долгий путь освоения, чем у простых фреймворков.
Примечание переводчика: долгий путь освоения связан не со сложностью системы, а с низкой популярностью в .ru сегменте, отсутствием живого русскоговорящего сообщества, и как следствие, технической и моральной поддержки.
Catalyst позволяет создавать приложения с использованием специфики интернациональной кодировки (UTF-8) довольно просто, чего нельзя сказать об аналогичных системах или других языках программирования.
Catalyst содержит свой собственный WEB-сервер, чрезвычайно удобный для разработки, в сравнении с использованием связки другого фреймворка с WEB-серверами типа Apache, nginx или lighttpd.
Приложение на Catalyst может быть запущено как CGI скрипт, или совместно с mod_perl, как FastCGI сервер или даже на встроенном WEB-сервере.
Примечание переводчика: Начиная с версии 9.0 Catalyst может быть запущен как PSGI приложение, что дает вам возможность использовать большое количество WEB-серверов с поддержкой PSGI, а так же функционал модулей PLACK (Plack Middleware), дающий возможность гибко обрабатывать запросы на уровень выше самого PSGI приложения, например для обработки статического контента, сжатия потока, проксирования и т.п.
Catalyst написан на Perl, что означает что вы можете свободно использовать тысячи модулей из библиотеки CPAN в ваших приложениях. С использованием cpan, cpanplus или cpanminus приложений, установка Perl модулей становится очень проста. Правда установка Perl модулей на сервер, где у вас нет привилегий суперпользователя может быть затруднительной (хостинг, VPS сервера), но и в этом случае есть решения.
Catalyst имеет самый гибкий, законченный и главное простой в использовании механизм маршрутизации (dispatching). Вы не обязаны привязывать к адресам из URL все действия в программе, как того требуют некоторые PHP или Python фреймворки, и более того, вы можете использовать больше типов маршрутизации в самом приложении, от самых простых (и самых часто используемых) до более сложносочиненных, позволяющих выполнять больше действий на один запрос.
Существует большое количество вспомогательных модулей для Catalyst’a, которые вы можете установить из CPAN (сделайте поиск по Catalyst и CatalystX на search.cpan.org), которые позволят вам локализовать ваше приложение, использовать обработку форм, ORM, библиотеки JavaScript, передавать данные в формате JSON и еще для очень много.
Вы можете локализовать ваше приложение используя gettext .po файлы, модули Perl, или используя таблицы с переводом из вашей БД. Вы даже можете перевести слова, отображаемые в URL адресах используемых в вашем приложении.
Catalyst предлагает понятные пути определения URL адресов в вашем приложении, даже на то случай, если необходимо будет настроить его так, что бы оно не отвечало на запросы к корневому адресу (/), но отвечало для некоторых путей внутри (например /old-site/).
Perl дает необходимые модули для создания содержания не только в формате HTML, но и как Textile, Markdown или даже BBCode (язык разметки используемый в phpBB).
В фреймворке Catalyst по умолчанию используется ORM DBIx::Class, который может делать вещи, о которых в других ORM’ах доступных на Ruby on Rails, Python или PHP можно только мечтать.
Есть множество типов базовых модулей представления (View’s), которые можно установить из библиотеки CPAN, выдающих результат работы приложения в формате HTML, или позволяющих вам использовать различные системы шаблонизации, или создавать .csv или .xls файлы или другие форматы не написав при этом ни строчки кода.
Как я уже сказал, Catalyst очень гибок, и обусловлено это прежде всего тем, что в своих проектах вы можете использовать любой из тысяч модулей доступных из библиотеки CPAN, и добавить тем самым функционал не описанный тут.
Когда вы создаете новое Catalyst приложение, используя команду catalyst.pl MyApp в командной строке, так же создадутся скрипты позволяющие тестировать ваше приложение, запускать встроенный WEB-сервер, или создавать дополнительные компоненты системы, вместе со скриптами для их тестирования. Perl представляет очень простой и мощный инструмент для тестирования, позволяющий создавать программы тестирования ваших приложений всего несколькими строками кода. Catalyst предлагает дополнительные инструменты, предназначенные для проверки приложений созданных на его основе.
Я тестировал множество фреймворков на PHP, но все они не давали достаточных возможностей. Некоторые из них не создают детализированную структуру проекта, некоторые используют только одну систему шаблонизации, или только один ORM, да и примеры использования ORM слишком низкоуровневые и недостаточно элегантны, и при этом сильно ограничены.
Некоторые PHP фреймворки требуют содержать описания привязки путей из URLов к действиям в программе (URL mapping/routing) в специальных файлов, что усложняет управление проектом, т.к. сделав изменения в программе, вам так же приходится вносить изменения в файле привязки.
Автоматизированная обработка форм? Не помню, что бы видел это в PHP. Модули обработки форм могут использоваться для генерации форм, определения ограничений, проверки, фильтров, создания составных HTML элементов – и все это без единой строчки кода на Perl, только используя конфигурационные файлы! Конфигурационных файлов, которые могут иметь любой предпочтительный формат, как например JSON, Perl хэши, в формате Apache, YAML или других.
Catalyst предлагает много (даже слишком много) расширений (плагинов), которые можно использовать для аутентификации, авторизации, кэширования, отправки сообщений и много другого. При этом вы можете использовать для них конфигурационные файлы и можете аутентифицировать ваших посетителей, не написав для этого ни одной строчки Perl кода. И эта аутентификация может быть основана на браузерных cookies или на части URL, а хранимые пользовательские данные могут быть получены из базы данных, конфигурационных файлов, или из файлов Apache .htaccess, или из LDAP или другого источника. И все это в можете делать даже без написания SQL кода вовсе, даже если вы используете одну или несколько баз данных в своем проекте.
Все это я написал по памяти, но уверен, если бы я заглянул в приложение, написанное на Catalyst, я бы вспомнил намного больше.
Попробуйте запустить поиск Catalyst на search.cpan.org и вы увидите большое количество модулей предлагающих другие возможности.
(Оригинал статьи
http://wiki.catalystframework.org/wiki/ ... _framework
Перевод: Nikita Belichenko
nikita@itatelier.ru )