Как я могу получить простоту PHP (развертывание), но мощь Perl?

Я презираю язык PHP и совершенно уверен, что я не одинок. Но самое замечательное в PHP - это способ, которым mod_php берет и скрывает кровавые детали интеграции со средой выполнения apache и обеспечивает изоляцию запросов, подобную CGI, и приличную производительность.

Какой кратчайший путь к достижению той же простоты, скорости и изоляции, что и среда выполнения PHP, с семантикой Perl? Мне кажется, что raw mod_perl дает мне слишком много веревки, чтобы я мог повеситься: глобальные запросы с перекрестными запросами, беспорядочная конфигурация, слишком много движков шаблонов на выбор.

FastCGI? HTML :: Мейсон? Я бы хотел заниматься разработкой в ​​основном на Perl, если бы у меня был фреймворк, который мне позволял.

«Я презираю язык PHP» Добро пожаловать на подножку

Dexygen 31.12.2008 15:42

Брайан, я думаю, вы слишком вольны с названиями вопросов людей! В этом, например, были полезны удаленные ключевые слова «среда» и «язык». Я бы сказал, ваше добавление "Power" не совсем правильно (и вкладывает слова в уста dsadinoff). И потерял вопрос «как сделать X в perl?».

dreeves 01.02.2009 19:54
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
19
2
1 314
12
Перейти к ответу Данный вопрос помечен как решенный

Ответы 12

Я бы рекомендовал Катализатор с FastCGI. Кроме того, что касается шаблонов, Template :: Toolkit - мой личный фаворит, но HTML :: Мейсон также высоко ценится в сообществе.

Ответ принят как подходящий

Посмотрите на Катализатор, этот MVC-фреймворк (модель, представление, контроллер) работает автономно или с apache_perl и скрывает множество беспорядочных битов. Есть немного странная кривая обучения (быстрый старт, более медленная середина, затем действительно щелкает для продвинутых вещей).

Catalyst позволяет использовать Набор инструментов для шаблонов для отделения логики проектирования от бизнес-логики. Набор инструментов Template действительно великолепен, даже если вы решите не использовать Catalyst, вам следует использовать его. HTML :: Mason - это не то, что мне лично нравится, хотя, если вы делаете весь HTML самостоятельно, вы можете просмотреть Template :: Declare, который является еще одной альтернативой, которую вы также можете использовать с Catalyst.

Что касается базы данных, посмотрите DBIx :: Класс, который снова работает с Catalyst или сам по себе.

Вы можете использовать другие модули шаблона.

Brad Gilbert 31.12.2008 22:57

Catalyst - самый близкий к тому, что я действительно хочу, хотя это не совсем то, о чем я просил :) Похоже, PerLite поможет, если когда-нибудь запустится.

djsadinoff 17.06.2009 12:39

Есть много возможностей, в зависимости от того, что вы хотите сделать.

Если вы хотите воспользоваться преимуществами скорости mod_perl, но простотой ванильного CGI, ознакомьтесь с распределением Modperl :: Реестр от CPAN. Это позволит вам запускать простые сценарии CGI практически без изменений.

Что касается фреймворков, я большой поклонник CGI :: Приложение. Он предоставляет очень простую структуру, основанную на наследовании, которая обрабатывает почти все, что потребуется веб-приложению, давая вам свободу разрабатывать свое приложение так, как вам нравится. Простое приложение можно сделать монолитным; более сложный может использовать полноценную конструкцию MVC. Как и Perl в целом, CGI-App предоставляет вам множество возможностей и обычно не мешает вам.

CGI-App по умолчанию поддерживает отличный модуль HTML :: Шаблон и имеет плагины для других систем шаблонов, таких как впечатляющая Набор инструментов для шаблонов. Также существует множество плагины для других целей.

Если вы хотите, чтобы за вас было проделано больше работы, посмотрите Катализатор. Этот способ работы может быть более знакомым, если вы использовали Ruby on Rails.

К другим популярным фреймворкам веб-приложений относятся Jifty и CGI :: Прототип, написанные Рэндалом Шварцем и основанные на объектном фреймворке Класс :: Прототипированный.

Вышеупомянутый Catalyst - прекрасный инструмент для создания целых веб-приложений, но отнюдь не прост. Основная сила PHP заключается в том, что вы можете встраивать небольшие его фрагменты по мере необходимости в статические страницы, в противном случае вы можете:

<html><body><p>The value of 2+2 is: <?php echo 2+2; ?></p></body></html>

и посмотрите в своем браузере:

The value of 2+2 is: 4

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

К счастью, этот уровень простоты может может быть достигнут с помощью Mason, который в некоторых отношениях (благодаря мощи Perl) может быть даже проще. Приведенный выше пример гласит:

<html><body><p>The value of 2+2 is: <% 2+2 %></p></body></html>

и вы получите тот же результат.

Нет причин, по которым вы не можете начать с установки и работы с Mason, а затем установить Catalyst параллельно с ним, однако, если вы планируете позже перейти к очень сложным проектам, основанным исключительно на Perl.

[% value = 2 + 2%] Значение 2 + 2 равно [% value%]

Ranguard 26.09.2008 10:22

Вы можете установить для параметра TAG_STYLE значение asp для <% 2+2 %> или даже php для <? 2+2 ?>. У вас даже есть возможность установить свои собственные начальный и конечный теги.

Brad Gilbert 31.12.2008 23:02

Интересно, что случилось с mod_perlite, который должен был предоставить точно то, что вам нужно.

Такие вещи, как Catalyst и CGI :: Application, являются скорее эквивалентами Zend Framework, чем самого PHP. Чтобы воспроизвести базовую функциональность для создания веб-страниц, которую PHP предлагает «из коробки», вам понадобятся два модуля CPAN, которые должны быть доступны в каждой базовой установке Perl:

use CGI;
use DBI;

Это все, что вам действительно нужно. Теперь вместо:

$_POST['param']
$_GET['param']

у тебя есть:

my $q = new CGI;
$q->param('param'); # same for post or get

И вместо:

$dbh = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$sth = mysql_query("SELECT 1 FROM table", $dbh);
while($row = mysql_fetch_assoc($sth))
{
    // do something with $row
}

У тебя есть:

my $dbh = DBI->connect('DBI:mysql:host=localhost;', 'mysql_user', 'mysql_password');
my $sth = $dbh->prepare("SELECT 1 FROM table");
$sth->execute();
while(my $row = $sth->fetchrow_hashref)
{
    # do stuff with row
}

Код DBI немного сложнее, потому что он предлагает подготовленные состояния и связанные переменные, так что вам не нужно беспокоиться о SQL-инъекциях. PHP не предлагает этого, поэтому вам нужно использовать что-то вроде PDO или написать свой собственный класс базы данных.

Единственное, что осталось, - это если вам нужен вывод HTML в скрипте. Но ты же этого не хочешь? Для этого вы используете HTML :: Template или Template :: Toolkit, точно так же, как вы должны использовать Smarty или собственные шаблоны в PHP.

Я думаю, что суть в том, что FCGI нужно добавить поверх этого, прежде чем он станет действительно правдоподобным шаблоном проектирования, особенно с точки зрения производительности.

djsadinoff 02.02.2009 18:15

Ближайшим и хорошо зарекомендовавшим себя эквивалентом PHP в Perl, вероятно, является HTML :: Мейсон.

Как и PHP, он встраивает Perl в ваш документ и отображает его:

% my $noun = 'World';
Hello <% $noun %>!
How are ya?

Книга О'Рейли Встраивание Perl в HTML с помощью Mason доступна в Интернете бесплатно.

Я не считаю смешивание кода и HTML хорошим моментом - это скоро приведет к беспорядку.

David Precious 02.01.2009 20:09

@ Дэвид, возможность злоупотребить этим весьма заманчиво. Однако приятно, что не нужно изучать совершенно новый синтаксис для управления потоком и доступа к данным. IMO, действительно захватывающие вещи с Mason - это автоматические обработчики, dhandler и наследование компонентов. Но на самом деле они не похожи ни на что из того, что я знаю в PHP.

daotoad 29.06.2010 23:35

Я согласен с Аристотелем. mod_perlite звучит как то, что вы ищете, если бы он был закончен.

Я работал с HTML :: Mason, сначала взломал RT, а затем создал с ним два сайта. Кривая обучения есть, но это не так уж плохо. Хуже, я думаю, установка, но это гораздо больше связано с Apache и mod_perl, чем с Mason. После того, как части будут на месте, все будет настолько сложно, насколько вы их сделаете (как и сам Perl).

Наиболее близким к PHP по простоте является HTML :: Mason.

Предложение Catalyst - плохая шутка для тех, кто ищет простоты ... И теперь я с удовольствием работаю с Catalyst каждый божий день.

Я только что видел Танцор. Похоже, это хороший вариант.

Если бы Mojolicious существовал, когда я задал этот вопрос, я сомневаюсь, что я бы его задал.

В частности, Mojolicious :: Lite

Другие вопросы по теме