ホームページ > 記事 > PHPフレームワーク > spl_autoload_register の過去と現在について話しましょう
#❝この記事では、spl_autoload_register について説明します。❞
カカはロードマップをまとめ、面接ガイドの作成に着手し、私が書いているこのロードマップに従う準備をしました。この記事では、後から追加されていないナレッジ ポイントをいくつか追加しています。また、パートナー全員が追加に協力してくれることを願っています。コメント エリアでお会いしましょう!❞
これら 2 つの違いをまだ覚えていますか?
Include はエラーが報告されたときにのみ警告を発しますが、require はスクリプトを直接停止します。
名前空間の概念は PHP5.3 で導入されました。このため、ある寄稿者は 11 年前の PHP ドキュメントでこう述べています、名前空間と呼ばれるものを推奨しないようにするためにこのベンチマークを作成しました「いいけど、遅い」は後ほど
。
「今後、良いとは言えても非常に遅いものを推奨しないことを確認するために、このテストを行いました」と訳します。
テストでは、10 個のフォルダーを定義し、各フォルダーには 10 個のサブフォルダーがあり、各サブフォルダーには 10 個のクラスがあり、autoload と spl_autoload を使用して比較します。平均実行時間は 50 ミリ秒長くなります。
これは _autoload()
を指しますが、このメソッドは最終的に PHP7.2 で廃止される予定です。
効率の問題に加えて、_autoload メソッドが最終的に放棄された別の理由があります。
spl_autoload_register 必要に応じて複数のレジスタを記述することができ、読み込み順序はキュー モード (先入れ先出し) になります。
autoload はグローバル関数であるため、一度しか定義できません。複数回定義するとエラーが報告されます。複数のフレームワークを使用してプロジェクトを実装すると、この問題が発生します。
この関数にはパラメータが 3 つだけあり、最初のパラメータは自動的にロードされます。 、2 番目のパラメーターは、自動的に登録された関数が失敗したときに例外をスローするかどうか、3 番目のパラメーターは関数をキューの末尾ではなくキューの先頭に追加することです。
上記はすべて true に基づいて定義されています。
say と user の 2 つのファイルを定義します
say ファイルはクラス Say を宣言し、メソッド hello を設定します
ユーザー ファイルに到達したら、最初に自動ロード メソッドを定義し、次に spl_autoload_register を使用してregister
#印刷されたデータ結果
❝学習の継続、ブログの継続、共有の継続は、Kaka が常に守ってきたことです。カカの巨大なインターネット上の記事が少しでも役立つことを願っています。
❞
以上がspl_autoload_register の過去と現在について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。