ホームページ >バックエンド開発 >PHPチュートリアル >Xin Xing をフォローして、PHP の自動読み込みについて学習してください
PHP の自動ロードについて学ぶには、Xin Xing を参照してください
フレームワークとして、ファイルをロードするメカニズムは不可欠です。どのようにロードすればよいでしょうか。PHP はすでにそれを考えてくれているので、ルールに従うだけで済みます。 PHP にはこの機能を実行できる関数が 2 つあります。1 つ目は __autoload ですが、現在はより強力な spl_autoload_register に置き換えられています。弊社のメインストリームバージョンはサポートされておりますので、安心してご利用いただけます。
以前の PHP バージョンでは、設定ファイル、データベース接続ファイル、ログ ファイルなどの一連のファイル名が必要になることがよくありました。その後、関数内に __autoload 関数が追加されました。すべてのインポート作業を完了する利点は、プログラムで処理できることです。たとえば、正規表現を使用すると、一度に n 個のファイルをインポートできるため、ある程度の操作には非常に便利です。ただし、__autoload Write を使用する必要があります。すべてのタイプの場合、そうしないと自動ロードが適切に実装されません。
spl_autoload_register の機能は、n 個のロード関数を登録することです。いつでもどこでもこの組み込み関数を使用して、ロードする必要があるファイル名を指定できます。その関数のプロトタイプは次のとおりです。
bool spl_autoload_register ( [callback $autoload_function] )コードで練習してみましょう:
まず、次の内容の B.class.php を作成します:
<?phpclass B { private $name = "辛星"; private $age = 23; function getmsg(){ return "姓名是:".$this->name." 年龄是:".$this->age; }}次に、同じディレクトリに新しい a を作成します。 .php ファイルの内容は次のとおりです:
<?php//先定义一个加载函数function xin_load($class){ $file = $class.".class.php"; if(file_exists($file)){ require_once($file); }}//然后注册它spl_autoload_register('xin_load');$class = new B();echo $class->getmsg();ここでクラス B が正しくインスタンス化できる理由は、クラス B のインスタンスを定義するときに、システムがファイルをロードする必要があることを認識するためです。 . そこで、彼はすべての読み込み関数を探し、B.class.php で B の定義を見つけて、ファイルを読み込みました。ここでは B.class.php のみがインポートされ、他の形式も同様であることに注意してください。輸入されないこと。