この記事では、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函数
公式: 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('PHPExcel_Autoloader','Load')),$functions); foreach ( $functions as $function) $x = spl_autoload_register($function); return $x; }
PHPWord自動読み込み方法
public static function Register() { return spl_autoload_register(array('PHPWord_Autoloader', 'Load')); }
これら 2 つのメソッドは自動読み込みを再定義するために使用できますが、違いはありますか? コードが独立して実行される場合、YII フレームワークなどのフレームワークに統合されている場合は、両方のケースを実行できます。するとPHPWordの自動読み込みが無効になります。
YII フレームワークには自動的にオートロード関数が付属しており、コードの実行時にすでに登録されており、spl_autoload_register() がオートロード キューの最後に新しいオートロード関数をロードするためです。すべての PHPWord が実行されると、YII フレームワークによって定義された自動ロード メカニズムが呼び出されます。これは PHPWord のロード メソッドではありません。
ということで、PHPexeclのloading関数を見てみると分かります。
要約: 上記がこの記事の全内容です。皆様の学習に役立つことを願っています。
関連する推奨事項:
ネイティブDOMオブジェクト操作XMLを実装するためのPHPメソッド WeChat決済の返金機能を実現AlipayシリーズのコンピューターWebサイト決済以上がPHP オブジェクト指向自動ロード機構の原理と使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。