検索
ホームページphp教程php手册Zend の AutoLoad メカニズムの概要

Zend の AutoLoad メカニズムの概要

Jun 13, 2016 am 11:57 AM
autoloadincludelibpathsetzend導入コードコピー機構

コード例

コードのコピー コードは次のとおりです。


set_include_path(USVN_LIB_DIR . PATH_SEPARATOR . get_include_path()) ;
require_once 'Zend/Loader/Autoloader.php';
$autoloader_Autoloader::getInstance();
$autoloader->registerNamespace("Zend_"); ;registerNamespace( "USVN_");
$autoloader->registerNamespace("menus_");
$config = new USVN_CONFIG_FILE, USVN_CONFIG_SECTION); 🎜>プロセス分析

最初は、php で include を呼び出すときにファイルが検索されるアドレスである include_path を設定します。
次は、require_once 'Zend/Loader/Autoloader. php';
Zend/Loader/Autoloader.php ファイルでは、Zend/Loader.php が読み取られます。このクラスには、loadClass、loadFile、isReadable (ファイルが読み取り可能かどうか) が含まれます。およびその他の関数
インスタンス化 Zend_Loader_Autoloader のプロセスは、そのコンストラクターを呼び出すプロセスです (ここではシングルトン モードが使用されます)

spl_autoload_register(array(__CLASS__, 'autoload')); コンストラクターでは Zend_Loader_Autoloader が使用されます。 autoload クラスとして自動的に関数をロードします。
_internalAutoloader を自分の _autoload に割り当てる操作も行いました

ここでのオートロードの方法については、具体的な例に基づいて確認します
その後、Zend_Loader_Autoloader:registerNamespace("USVN_") を呼び出しました)、この関数が行うことは、キー USVN_ と値 true を持つ値を Zend_Loader_AutoLoader の内部属性 _namespaces にマウントすることだけです。

この関数を見ると、コードが

$autoloader->registerNamespace("Zend_")->registerNamespace("USVN_") または
$autoloader->registerNamespace(array("Zend_","USVN_"))

OK、今度は USVN_Config_Ini クラスを呼び出します
このクラスは当然 Zend_Loader_Autoloader:autoload を使用します("USVN_Config_Ini")
この関数の最初のステップは、getClassAutoloaders を呼び出して、このクラスの AutoLoader を取得することです。 GetClassAutoloaders は、namespaceAutoloader の選択と判定を追加します。あまり使用しないので、直接スキップします。

ここで返されるローダーは次のように表示されます



コードをコピーします

コードは次のとおりです:

Array ( [0] => Zend_Loader_Autoloader Object ( [_autoloaders:protected] => Array ( ) [_defaultAutoloader:protected] => Array ( [ 0] => Zend_Loader [1] => ロードクラス ) [_fallbackAutoloader:protected] => 配列 *RECURSION* [_namespaces:protected] => 配列1 [ZendX_] => 1 [USVN_] => 1 [menus_] => 配列 () [_suppressNotFoundWarnings:protected] => ) [1] => _autoload ) は実際には前に設定した _internalAutoloader です。

Zend_Loader_Autoloader:_autoload ("USVN_Config_Ini") はここで実際に呼び出されます
さて、Zend_Loader_Autoloader:_autoload 関数が表示されました。

$callback = $this->getDefaultAutoloader() ;
デフォルトのオートローダーはここで取得されます。デフォルトのオートローダーは何ですか? このクラスの初期定義を見ると、実際には array('Zend_Loader', 'loadClass'); です。
以下で呼び出されるのは call_user_func です。 ($callback , $class); つまり、Zend_Loader:loadClass("USVN_Config_Ini")

まず、AutoLoader.php で Zend_Loader が必要です。
次に、Zend_Loader を見てみましょう。このメソッドの最初のステップは、例外をチェックすることであり、スキップされます。 2 番目のステップは、クラスを分離し、USVN/Config/Ini.php などの $file にまとめることです。次に、self::loadFile($file, null, true);

を呼び出します。 check self: :loadFile,
まず、_securityCheck はクラス名に不正な文字が含まれているかどうかをチェックします。含まれていない場合は、$file が含まれます。もちろん、ここでの $file は相対パスであり、include_path がどこに設定されているか覚えていますか?プログラムの最初に設定してください。さて、これが読み込まれた USVN_Config_Ini クラスです。
これを見ればわかると思いますが、自分でクラスを定義して、USVN などの名前空間を登録する場合は、include_path の下に同じ名前のフォルダーを作成する必要があります (大文字と小文字は区別する必要があります)。導入された相対ファイル パス名は、クラス名の _ で区切られて読み込まれます。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境