私が作成したいくつかの関数があり、サーバーで定期的に使用しています。それらをコアに追加して、外部ファイルから含める必要がないようにする方法はありますか?
PHP5を実行しています
私が作成したいくつかの関数があり、サーバーで定期的に使用しています。それらをコアに追加して、外部ファイルから含める必要がないようにする方法はありますか?
PHP5を実行しています
ライブラリをPEAR拡張機能として追加できます。次に、それをローカルの PEAR リポジトリに追加できます。Pear は、php.ini のデフォルトのインクルード パスに追加されます。次に、マシンで「pear install myextension」を使用するだけです。
これらが php でインターフェースする C 関数 (php 拡張機能) である場合は、PECLで同様のことができます。
関数を含めずに常に使用できるようにするには、次のようにします。
関数を php ファイルに作成します。
php.ini でオプション「auto_prepend_file」を検索し、次のように、php ファイルをその行に追加します。
または、次のようにパスを指定せずに記述した場合: auto_prepend_file = "my_superglobal_function.php" ファイルを見つけるために php.ini の include_path を調べます。
私は以前にこれをやったことがあります..かなり複雑なプロセスですが、それほど悪くはありません. zend.com のこの記事では、知っておくべきことをすべて説明しています。
http://devzone.zend.com/303/extension-writing-part-i-introduction-to-php-and-zend/
編集:あなたがやろうとしていることの本質を達成するためのより良い方法があることを追加する必要があります. これを行うと、PHP の (すでに非常に雑然としている) 名前空間がさらに雑然とすることに注意してください。おそらく、必要な場所にインクルードする最も一般的に使用される関数をすべて含むグローバル インクルード ファイルを作成する方がよいでしょう。
edit2:元の質問を読み直すと、あなたはそれをしたくないと言っていましたが、それでもおそらく最善の方法だと思います. しかし、延長ルートで頑張ってください。
必要な場所にファイルを含めるのが難しいのはなぜですか?
auto_prepend_file PHP.ini ディレクティブが機能すると思います。しかし、それはあまりお勧めできません。
autoloadを取得した場合は、関数を My_Functions などのクラスの静的メソッドとして移動できます。
または、より多くのファイルに分割するには、My_Functions_Math を使用できます。その後、必要な機能のみをロードする必要があります。また、オートロードを使用すると、ファイルを含めることを心配する必要はありません。
名前空間関数を自動ロードすることはできないため、自動ロードを使用する場合、関数はクラス内の静的メソッドである必要があります。ただし、名前空間を使用して、将来のクラスの置き換えや長いクラス名の短縮を容易にすることができます。例:
use My\Functions\Math as Math;
Math::calcThis($i);