为什么mod_python是oop而mod_php不是?
例子:我们访问www.example.com/dir2 1/dir2 2
如果使用mod_python,apache将打开www/dir1.py并调用dir2方法,但是如果使用php模块,则Apache会打开www/dir1 1/dir1 2/index.php。
发布于 2009-05-17 03:02:35
让我们来谈谈mod_python与mod_php之间的关系。
由于Python不是专门为服务网页而设计的,所以mod_python必须做一些额外的工作。
由于PHP语言是专门为web页面设计的,因此mod_php只需启动一个命名的PHP模块。
对于mod_python (与mod_fastcgi或mod_wsgi不同),mod_python的设计人员认为调用mod_python的最佳方法是调用模块中定义的对象的方法。希望该对象的方法能够将标题和网页内容写入stdout。
对于mod_wsgi,设计人员认为调用Python的最佳方法是调用模块中的函数(或可调用对象)。希望该函数将使用提供的对象创建标题,并返回带有网页内容的列表字符串。
在mod_php的情况下,它们只是调用模块,因为PHP模块是为web页面设计的。程序运行,运行的结果是一页内容;通常是HTML。
mod_php以一种方式工作,mod_python以另一种方式工作,而mod_wsgi使用第三种方式是因为它们不同。由不同的人用不同的定义编写的制作网页的方式。
php页面可以是面向对象的.mod_wsgi函数可以是可调用的对象,也可以是简单的函数。这是设计上的选择。
类的mod_python需求是由mod_python的设计人员做出的设计选择。
“为什么”这个理由从来没有用过。“为什么”是因为有人决定把它设计成那样。
发布于 2009-05-16 17:05:39
因为mod_python将URL抽象为“RPC样”机制。您可以在PHP中实现同样的目标。我一直都是手工完成的,但是我非常肯定会有预先打包的pear模块。
注意,mod_python行为不是强制“最好”的。这一切都相当于您想要给应用程序的设计类型,以及它对客户端的行为方式。据我所见,mod_python方法假定每个URL都有一个函数,比如将模块结构映射到URL树。从技术上讲,这并不是一种特别好的方法,因为您正在使用的技术(mod_python)与应用程序的URL布局之间有着紧密的关联。
为什么没有理由。有些人喜欢一种食物,另一些人喜欢另一种食物。在某些情况下,设计是一个品味和艺术选择的问题,而不仅仅是技术上的限制。
发布于 2009-05-16 17:54:27
我认为您对HTTP的工作方式有一些误解。http标准中没有任何东西要求您将某个文件作为资源。这正是mod_php的工作方式,对于给定的路径,这个路径被转换为服务器磁盘上的一个php文件,然后由编译器来解释。
另一方面,mod_python模块更通用,它允许您将任何资源映射到对某个python对象的调用。它只是碰巧,一些配置是现成的,以使它更容易开始。在大多数情况下,url的分配是由您的框架管理的,它的工作方式取决于框架实现者。
由于mod_python模块的一般特性,您还可以访问mod_php模块中不可用的一些mod_php特性,例如,您可以编写自己的身份验证处理程序,这不仅适用于您的python,而且也适用于您的mod_php中的其他应用程序。
https://stackoverflow.com/questions/872695
复制相似问题