4

まず、背景を少し。私が働いている会社は、すべてのページに含まれる大規模な関数/クラス ライブラリを使用しています。何千、何千行もの関数があり、その 90% はおそらくページ上で呼び出されることさえありません。

サーバーの負荷を少し軽減するために、私はよりスマートなライブラリ設定を試してきました。この目的のために、ファイル全体を分類されたライブラリ ファイル (つまり、sql.functions.php、date.functions.php など) に分割しました。

残念ながら、すべてのページにすべてのファイルを含めることはまったく役に立ちません。ファイルを選択的に含めることはほとんど不可能であり、エラーが発生しやすくなります。

私が探しているのは___autoload()、未知のクラスが開始された場合にそれを見つけようとして、特定の名前のファイルを自動的に検索する PHP の機能に似たセットアップです。

<?php
  function ___autoload($class_name) {
    require_once($class_name.'.class.php');
  }
?>

ただし、この関数は関数呼び出しでは機能せず、クラスのみで機能します。

未定義の関数 (つまりhtml_insert_button();) を呼び出すときに、名前付き関数ライブラリを自動的に検索して含めるように PHP に指示する方法はありますか?

(上記の場合、html_functions.php関数のプレフィックスを共有しているため、ロードする必要があります)

4

1 に答える 1

4

残念ながら、関数を自動ロードする方法があるとは思いません。一部の人は、 SitePoint フォーラムでこれについて議論しました。

インクルードの量を減らすことができるので、私はそれが素晴らしい追加になると思います.

CodeIgniter の場合と非常によく似た方法で、関数をロードしました。

関数のセットを使用するときはいつでも、library("html") 関数を呼び出します。この関数には、これから使用するライブラリが含まれます (一度だけ含まれるようにします)。

関数ライブラリ($name)
{
    include($name .".lib.php");
}

おそらくあなたが探している答えではないでしょうが、それが私のやり方です。

于 2009-07-30T19:53:49.523 に答える