定義されていない関数を呼び出すと、未定義のエラーがスローされ、実行時に実行が停止します。エラーをキャッチすることができたとしても、関数出力を元の変数に戻すことはできません。
私の推薦は、ページの開始時にすべての機能が含まれています。それ以外の場合は
foreach (glob("Function/*.php") as $filename)
{
include $filename;
}
、手動で各呼び出しのために、このような何かをする必要があると思います:
try {
$ret = example_function();
} catch (Exception $e) {
include('Function/example_function.php');
$ret = example_function();
}
あなたができましたただし、それを行うカスタム関数を作成します。
function myFunction()
{
$args = func_get_args();
$func_name = array_shift($args);
if (!function_exists($func_name)) {
include('Function/' . $func_name . '.php');
}
return call_user_func_array($func_name, $args);
}
myFunction('testFunction', $param1, $param2)
で機能を呼び出してください。
クラスを読み込んでいる場合、これは簡単になります。 PHP autoloadingを使用すると、このタスクを実行できます。
オブジェクト指向アプリケーションを作成する開発者の多くは、クラス定義ごとに1つのPHPソースファイルを作成します。最も厄介なことの1つは、各スクリプトの最初に必要なインクルードの長いリストを書くことです(クラスごとに1つ)。
PHP 5ではこれはもう必要ありません。 spl_autoload_register()関数は任意の数のオートローダーを登録し、クラスおよびインタフェースが現在定義されていない場合に自動的にロードできるようにします。オートローダーを登録することにより、クラスまたはインターフェースがエラーで失敗する前にPHPに最終チャンスが与えられます。
、メソッドのオーバーロードを使用しようとすることができますか? 'Function'ディレクトリに' $ functionName'で指定された有効なファイルがあれば、それは問題ありません。 – Umair
あなたは何をすることができますか?include.phpを作成します。それを呼ぶ。 $ functionNameがインクルード行の上に宣言されていない限り、関数は自動的にインクルードしません。 – Danimal
* "関数が" * - 'function myfunction(){ここに含まれています}'と呼び出され、関数が呼び出されます。あなたの質問の周りに私の頭を包んで苦労しているTBH。 –