如何获取PHP';s(部署)简单,但Perl';谁的力量?

如何获取PHP';s(部署)简单,但Perl';谁的力量?,php,perl,Php,Perl,我鄙视PHP语言,而且我很确定我不是唯一一个。但是PHP的伟大之处在于mod_PHP采用并隐藏了与apache运行时集成的血腥细节,并实现了类似CGI的请求隔离和良好的性能 使用Perl语义,获得与PHP运行时环境相同的简单性、速度和隔离度的最短距离方法是什么?我觉得原始的mod_perl给了我太多的束缚:交叉请求全局,混乱的配置,太多的模板引擎供我选择 快速CGI?梅森?我希望主要使用Perl进行开发,如果我有一个框架可以使用的话。我建议使用FastCGI。另外,对于模板化,Template:

我鄙视PHP语言,而且我很确定我不是唯一一个。但是PHP的伟大之处在于mod_PHP采用并隐藏了与apache运行时集成的血腥细节,并实现了类似CGI的请求隔离和良好的性能

使用Perl语义,获得与PHP运行时环境相同的简单性、速度和隔离度的最短距离方法是什么?我觉得原始的mod_perl给了我太多的束缚:交叉请求全局,混乱的配置,太多的模板引擎供我选择

快速CGI?梅森?我希望主要使用Perl进行开发,如果我有一个框架可以使用的话。

我建议使用FastCGI。另外,对于模板化,Template::Toolkit是我个人的最爱,但是HTML::Mason在社区中也很受重视。

看看这个MVC(model,view,controller)框架,它可以独立工作,也可以与apache_perl一起工作,并且隐藏了很多混乱的部分。有一个稍微奇怪的学习曲线(快速开始,中间较慢,然后它真的点击高级东西)

Catalyst允许您使用它来分离设计逻辑和业务逻辑,模板工具包真的很棒,即使您决定不使用Catalyst,您也应该使用它。Mason并不是我个人喜欢的东西,不过如果你自己做所有的HTML,那么你可能想回顾一下Catalyst的另一个选择


有关数据库的内容,请看Catalyst,它可以与Catalyst一起使用,也可以单独使用。

根据您的需要,有很多可能性

如果您想利用mod_perl的速度,但是香草CGI的简单性,请查看CPAN的发行版。这将允许您在很大程度上不改变地运行普通CGI脚本

就框架而言,我非常喜欢。它提供了一个非常简单的基于继承的框架,可以处理web应用程序需要做的大部分事情,让您可以自由地按照自己喜欢的方式设计应用程序。一个简单的应用程序可以以单一的方式完成;更复杂的设计可以使用成熟的设计。与一般的Perl一样,CGI应用程序为您提供了很多选择,并且通常不会妨碍您

默认情况下,CGI应用程序支持优秀的模块,并且具有用于其他模板系统(如Splantical)的插件。还有大量用于其他目的的信息

如果你想为自己做更多的工作,请退房。如果您使用过RubyonRails,这种方法可能会更为熟悉


其他流行的web应用程序框架包括和,由Randal Schwartz编写,它基于对象框架。

前面提到的Catalyst是构建整个web应用程序的好工具,但它绝不简单。PHP的主要优势在于,您可以根据需要在其他静态页面中嵌入它的小块,即,您可以:

2+2的值为:

并在web浏览器上查看:

2+2的值为:4

如果您尝试使用Catalyst执行类似操作(据我所知),那么您正在开发一个包含多个文件的完整应用程序,以打印一个简单的值。至少,在我看到的教程中没有解释如何进行简单的嵌入

幸运的是,Mason可以达到这种简单程度,在某些方面(由于Perl的强大功能),它甚至可以更简单。上面的例子是:

2+2的值为:

你会得到同样的结果


但是,如果您计划以后转向非常复杂、纯Perl驱动的项目,那么您没有理由不先安装Mason并与之合作,然后再安装Catalyst,它将提供您想要的东西。

像Catalyst和CGI::Application这样的东西更等同于Zend Framework,而不是PHP本身。为了复制PHP提供的“开箱即用”的创建网页的基本功能,您需要两个CPAN模块,这两个模块应该在每个基本Perl安装中都可用:

use CGI;
use DBI;
这就是你真正需要的。而不是现在:

$_POST['param']
$_GET['param']
$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 $q = new CGI;
$q->param('param'); # same for post or get
而不是:

$_POST['param']
$_GET['param']
$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,这与您在PHP中使用Smarty或本机模板的方式相同。

与Perl中的PHP最接近的、被广泛认可的等价物可能是

与PHP一样,它将Perl嵌入到文档中并呈现:

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

奥莱利的书可以在网上免费获得。

我同意亚里士多德的观点。莫迪珍珠岩听起来就像你正在寻找的,只要它完成

我使用过HTML::Mason,首先攻击RT,然后用它创建了两个站点。有一个学习曲线,但也不太糟糕。我认为,更糟糕的是安装了这个东西,但这与Apache和mod_perl的关系要比Mason大得多。一旦这些部分就位,它就只会像您所做的那样复杂(就像Perl本身)。

就简单性而言,最接近PHP的是HTML::Mason

对于追求简单的人来说,建议Catalyst是一个糟糕的笑话。。。现在,我每天都在愉快地与Catalyst合作。

我刚刚看到。看起来这可能是一个不错的选择。

如果我问这个问题时有人问过,我怀疑我会问这个问题

具体来说,

[%v