8

一部の php wamp/lamp パッケージには、php_amf、php_db、php_gd2 などのパッケージ内にパッケージ化された php 拡張機能が付属しており、拡張機能を有効にするか、デフォルトで拡張機能がインストールされていない場合はインストールするだけです。

私の一般的な質問は、これらの拡張機能はライブラリとどう違うのですか? 具体的に知りたいのですが、拡張機能をプロジェクト自体に読み込まれるライブラリに変えることはできますか? 目標は、php 拡張機能のような特別なインストールを必要とせずにライブラリを呼び出すことです。共有ホスティングを使用している場合、新しい拡張機能をインストールするための十分な権限がない場合があります。

4

3 に答える 3

13

PHP 拡張機能は、C または C++ プログラムであり、Zend Engine にラップされており、PHP インストール内で PHP 関数とクラスを提供します。

PHP ライブラリは、ネイティブ PHP でコーディングされたプログラムであり、PHP プログラム内で関数やクラスを提供するために拡張機能を使用する場合と使用しない場合があります。

PHP ライブラリをエクステンションに変換することはかなり簡単に可能で (十分な C++ の知識があると仮定して) できますが、C++ プログラムは PHP では使用できない関数やオブジェクトを使用する可能性があるため、反対のプロセスは退屈なプロセスになる可能性があります。

PHP は C でコーディングされているため、明らかに PHP 関数はすべて C で使用できるため、PHP ライブラリを拡張機能に変換する方が簡単です。ただし、その逆が常に当てはまるとは限りません。

于 2011-02-10T17:24:32.913 に答える
4

PHP 拡張機能は、別の言語 (通常は C または C++) で記述され、PHP を拡張して、PHP では実際には実行できなかったことを実行できるようにします。たとえば、PHP 組み込み関数でまだサポートされていないオペレーティング システムまたは Web サーバーとの直接的な対話です。拡張機能を使用すると、他の言語で記述された既存のコードを PHP から再利用することもできます。理論的にはライブラリを PHP で書き直すことはできますが、そうするのは実際的ではない場合が多く、コードを再利用することでより少ない労力でより多くの機能が得られ、コードの将来の更新をほとんどまたはまったく労力をかけずに組み込むことができます。

PHP ライブラリは、PHP コードの共有コレクションにすぎないため、複数の開発者がコードを再利用できますが、(理論的には) 自分で PHP コードを作成できないことは何もできません。

拡張機能をライブラリに変換するという点では、拡張機能が何をするかによって異なります。生の PHP で実行できる場合は変換できますが、ほとんど機能を完全に書き直したものです。また、コードが遅くなる可能性があります。

于 2011-02-10T17:25:43.840 に答える
2

拡張機能をライブラリに変換できますか

自動的にではありません。拡張機能は PHP で作成されていません。したがって、単純に変換することはできません。もちろん、同等の操作を実行する PHP を作成することは可能ですが、PHP は (ネイティブ/コンパイル済み言語と比較して) 計算が比較的非効率的であるため、そのようなスクリプトは元の拡張機能よりも大幅に遅くなります。

于 2011-02-10T17:33:45.303 に答える