ホームページ  >  記事  >  バックエンド開発  >  PHP オブジェクト指向自動ロード機構の原理と使用法

PHP オブジェクト指向自動ロード機構の原理と使用法

墨辰丷
墨辰丷オリジナル
2018-06-01 09:29:251417ブラウズ

この記事では、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(&#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;));
}

これら 2 つのメソッドは自動読み込みを再定義するために使用できますが、違いはありますか? コードが独立して実行される場合、YII フレームワークなどのフレームワークに統合されている場合は、両方のケースを実行できます。するとPHPWordの自動読み込みが無効になります。

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

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

要約: 上記がこの記事の全内容です。皆様の学習に役立つことを願っています。

関連する推奨事項:

ネイティブDOMオブジェクト操作XMLを実装するためのPHPメソッド


php

WeChat決済の返金機能を実現


php

AlipayシリーズのコンピューターWebサイト決済


以上がPHP オブジェクト指向自動ロード機構の原理と使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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