* include と require の機能は同じですが、include はエラー発生時に警告のみを生成するのに対し、require はエラーをスローしてスクリプトを終了する点が異なります。
# include_once と include の唯一の違いは、include_once はファイルが導入されているかどうかを確認し、導入されている場合は再度導入されないことです。
spl_autoload_register() 関数は、未定義のクラスを自動的にロードする機能を実現するための重要なメソッドです。いわゆる自動ロードとは、新しいクラスを作成するときに、最初にクラス ファイルをインクルードまたは要求する必要があることを意味します。 include または require がない場合、エラーが報告されます。そうすると、ファイルのヘッダーに include や require ファイルをたくさん書かなければならず、非常に面倒です
include や require クラスがない場合に通常に新しいクラスを作成するには、 という考え方があります。つまり、新しいクラスは事前にクラス ファイルをインクルードしなくても通常どおり新しいクラスを作成できるため、ファイル ヘッダーに多くの include(require) を含める必要はありません。実際、これは一種のカプセル化です。
spl_autoload_register 関数を使用すると、上記の機能を実現できますので、実装原理を見てみましょう。
この関数のパラメータは次のとおりです:
最初のパラメータ: autoload_function
これは関数 [メソッド] 名で、文字列または配列 (クラス メソッドの呼び出しに使用されます) にすることができます。この関数 (メソッド) の機能は、new が必要なクラス ファイルをインクルード (要求) し、new が使用されたときにファイルが見つからないようにすることです。実際、プロジェクト全体の include 関数と require 関数がカプセル化されています。
2 番目のパラメーター: throw
このパラメーターは、autoload_function が正常に登録できない場合に spl_autoload_register() が例外をスローするかどうかを設定します。
3 番目のパラメータ: prepend
これが true の場合、spl_autoload_register() は関数をキューの末尾ではなくキューの先頭に追加します。
新しいクラスを作成し、クラス ファイルが含まれていない場合、autoload_function メソッドが実行されます。
まずエラーの例を見てみましょう:
ログイン後にコピー
spl_autoload_register() 関数を使用した修正
#次の例から、new が含まれていないクラスの場合、最初のパラメータの関数名 spl_autoload_register の関数が実行されることがわかります。この関数の機能は、このクラスをインクルードすることで(クラス名とファイル名が一致する)、自動ローディング機能を実現します。それが原則であり、それほど複雑ではありません。
ログイン後にコピー
さらに、これを匿名関数に変更して次のことを実現できます。
ログイン後にコピー
PHP 関連の詳細については、PHP 中国語 Web サイト##を参照してください。 #!
以上がPHP 自動ロードメカニズムの概要 - spl_autoload_register() 関数、PHP クラスの自動ロードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。