オートローディング: spl_autoload、__autoload、および spl_autoload_register の探索
オートローディングは、インスタンス化時にクラスを動的にロードするための PHP の重要なテクニックであり、インスタンス化の必要性を回避します。手動ファイルのインクルード用。この記事は、オートロードに関連する 3 つの主要な関数、__autoload、spl_autoload、および spl_autoload_register を詳しく掘り下げることを目的としています。
spl_autoload_register について
spl_autoload_register() は、オートロードに対するより俊敏なアプローチを提供します。 __autoload と比較します。自動ロードプロセスを処理する複数の関数を登録できます。これらの関数は、新しいクラスがインスタンス化されるたびに連続して実行できます。
spl_autoload_register の実装
次の例を考えてみましょう。
spl_autoload_register('myAutoloader'); function myAutoloader($className) { $path = '/path/to/class/'; include $path.$className.'.php'; }
この例では, spl_autoload_register() は、myAutoloader 関数を登録します。 MyClass のようなクラスがインスタンス化されると、PHP はクラス名「MyClass」を myAutoloader に渡します。この関数は、クラス名を使用して適切なクラス ファイルを含めることができます。
spl_autoload_register の利点
デフォルト実装としての spl_autoload
spl_autoload は、__autoload マジック メソッドのデフォルト実装です。 spl_autoload_register() を使用して他のオートロード関数が登録されていない場合、spl_autoload が PHP によって呼び出されます。
spl_autoload の潜在的な使用例の 1 つは、すべてのファイルが 1 つのディレクトリに保存されている場合です。インクルード パスを設定し、spl_autoload_extensions() を使用すると、PHP は .php と .inc の両方の拡張子を持つファイルを検索できます。
例:
set_include_path(get_include_path().PATH_SEPARATOR.'path/to/my/directory/'); spl_autoload_extensions('.php, .inc'); spl_autoload_register();
この例では、このシナリオでは、新しいクラスがインスタンス化されるたびに PHP が spl_autoload を呼び出し、PHP と設定の両方の自動ロードが可能になります。ファイル。
以上がPHP オートロードにおける `__autoload`、`spl_autoload`、および `spl_autoload_register` はどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。