ホームページ  >  記事  >  バックエンド開発  >  PHPの自動読み込み機構の定義と使用例を詳しく解説

PHPの自動読み込み機構の定義と使用例を詳しく解説

伊谢尔伦
伊谢尔伦オリジナル
2017-06-30 09:58:061206ブラウズ

この記事では、主に PHP オブジェクト指向自動読み込みメカニズムの原理と使用法を紹介し、PHP オブジェクト指向自動読み込みメカニズムの原理、関連機能、および 注意事項をサンプルの形式で分析します。この記事を参照してください

例では、PHP のオブジェクト指向の自動読み込みメカニズムの原理と使用法を説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

PHP のオブジェクト指向アプローチを学習すると、

魔法のメソッドである「糖衣構文」をたくさん知ることになります。 autoload(); と呼ばれる自動読み込みを追加する魔法のメソッドがあります。

最初にコードの一部を見てください

<?php
function autoload($classname) {
  $filename = "./". $classname .".php";
  include_once($filename);
}
new a();

ここではクラス A がインスタンス化されていますが、コード ブロックにはクラス A に関連するコードはありません。常識的には、対応するクラス A が見つからないため、エラーが報告されるはずですが、自動ロード関数 autoload() を使用すると、結果が異なる可能性があります

上記のフローチャートより:

インスタンス化ページに新しいクラスを追加すると、まず、現在のディレクトリで対応するクラス コードを探します。存在しない場合は、自動ロード スタックに移動して、対応する自動ロード関数を見つけます。存在する場合は、自動的にロードされます。そうでない場合は、エラーがスローされます。

これがPHPの自動読み込みの仕組みです。それから焦点は後ろにあります。

自動ロードされた関数が複数ある場合はどうすればよいですか!

PHP は、

クラス

の自動ロードを実装するためのより柔軟な方法を提供する SPL 関数

spl_autoload_register(); // 注册autoload函数
official: spl_autoload_register() を提供します。したがって、autoload() 関数の使用は推奨されなくなり、将来のバージョンでは非推奨になる可能性があります。

ただし、この関数は PHPexecl と PHPWord の両方で自動読み込みのために使用されますが、この 2 つには違いがあります。 !

PHPexecl自動読み込み方式(

ここの作者はおそらくPythonエンジニアです。それ以外は中括弧が無く、インデントで表現されています)

public static function Register() {
    $functions = spl_autoload_functions();
    foreach ( $functions as $function)
      spl_autoload_unregister($function);
    $functions = array_merge(array(array(&#39;PHPExcel_Autoloader&#39;,&#39;Load&#39;)),$functions);
    foreach ( $functions as $function)
      $x = spl_autoload_register($function);
    return $x;
}

PHPWord自動読み込み方式

public static function Register() {
  return spl_autoload_register(array(&#39;PHPWord_Autoloader&#39;, &#39;Load&#39;));
}

どちらの方式でも自動再定義を完了できます、でも違いはありますか? コードが独立して実行される場合、YII フレームワークなどのフレームワークに統合されている場合は、両方のケースを実行できます。するとPHPWordの自動読み込みが無効になります。

YII フレームワークには自動的にオートロード関数が付属しており、コードの実行時にすでに登録されており、spl_autoload_register() がオートロード キューの最後に新しいオートロード関数をロードするためです。すべての PHPWord が実行されると、YII フレームワークによって定義された自動ロード メカニズムが呼び出されます。これは PHPWord のロード メソッドではありません。

ということで、PHPexeclのloading関数を見てみると分かります。

以上がPHPの自動読み込み機構の定義と使用例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。