4

なぜ mod_python は oop であり、mod_php はそうではないのですか?

例: www.example.com/dir1/dir2 にアクセスします

mod_python を使用する場合、Apache は www/dir1.py を開き、dir2 メソッドを呼び出しますが、php モジュールを使用する場合、Apache は www/dir1/dir2/index.php を開きます。

4

6 に答える 6

4

mod_pythonはURLを「RPCのような」メカニズムに抽象化しているためです。PHPでも同じことができます。私はいつも手作業でそれをしました、しかし私はこれのためにあらかじめパッケージ化された洋ナシモジュールがあるとかなり確信しています。

mod_pythonの動作は強制的に「最良」ではないことに注意してください。それはすべて、アプリケーションに提供したいデザインのタイプと、それがクライアントに対してどのように動作するかを意味します。私が見る限り、mod_pythonアプローチは、すべてのURLに対して、モジュール構造をURLツリーにマッピングするような関数があることを前提としています。使用しているテクノロジー(mod_python)とアプリケーションのURLレイアウトの間には密接な相関関係があるため、これは技術的には特に優れたアプローチではありません。

理由は、理由ありません。ある食べ物が好きな人もいれば、別の食べ物が好きな人もいます。デザインは、技術的な制約だけでなく、好みや芸術的な選択の問題である場合もあります。

于 2009-05-16T17:05:39.900 に答える
4

HTTP の仕組みについて誤解していると思います。http 標準では、特定のファイルをリソースとして持つ必要はありません。mod_php がどのように機能するかは、指定されたパスに対して、このパスがサーバーのディスク上の php ファイルに変換され、コンパイラによって解釈される方法です。

一方、 mod_pythonモジュールはより汎用的で、任意のリソースを Python オブジェクトの呼び出しにマップできます。たまたま、簡単に開始できるように、すぐに使用できる構成がいくつかあります。ほとんどの場合、URL のディスパッチはフレームワークによって管理され、それがどのように機能するかはフレームワークの実装者次第です。

mod_pythonモジュールの一般的な性質により、 mod_phpモジュールでは利用できないいくつかの apache 機能にもアクセスできます。たとえば、独自の認証ハンドラーを作成できます。これは、python webapp だけでなく、あなたのApacheの他のアプリも同様です。

于 2009-05-16T17:54:27.380 に答える
0

PHP では、Web ページをトップツーボトム スクリプト、手続き型プログラミング、関数呼び出し、OOP でプログラミングできます。これが、PHP が最初に作成された主な理由であり、どのように進化したかです。mod_php は、Web サーバーが PHP をプリプロセッサーとして利用するための単なるモジュールです。そのため、HTTP 情報と PHP スクリプトを PHP インタープリターに渡すだけです。PHP で Web ページを作成する方法は、自分のやりたいことをすることです。上から下へのスクリプトを記述し、さまざまなファイルに関数を定義してそれらを含めて関数を呼び出すか、OOP でアプリを記述します。今日の多くのフル機能のフレームワークを使用して、アプリケーションの設計と構造が今日のベスト プラクティスを満たしていることを確認することもできます。そしてデザインパターン。

私は Python を初めて使用し、Python を使用した Web プログラミングに慣れていません。しかし、私の知る限り、Python は Web プログラミングを容易にするために作成されたわけではありません。汎用プログラミング言語を意図していたので、Python で単純なトップ ツー ボトム スクリプトを記述し、それらを Web ページの応答として実行することは可能かもしれませんが (そのようなことが可能かどうかはわかりません)、 pythonic の方法ではないので、mod_python の開発者は python での web プログラミングを pythonic の方法で行うことを望んでいたと思います。

于 2009-05-17T04:11:45.153 に答える
-1

おそらく私はあなたの質問を誤解していますが、Python と PHP はどちらも手続き型プログラミングとオブジェクト指向プログラミングの両方をサポートしています。(ただし、Python の OO のサポートは 2 つのうちでより強力であると主張することもできます。)

于 2009-05-16T16:09:08.290 に答える
-1

PHP 5 のクラスとオブジェクトを参照してください。

于 2009-05-16T16:11:11.467 に答える