以下はWEB版ゲームの背景ソースコードの一部であり、全ソースコードは順次公開予定です。含めるクラス ファイルが多数ある場合は、対応するルールを決定し、__autoload() 関数でクラス名と実際のディスク ファイルを照合するだけで、遅延読み込み効果を実現できます。ここから、 __autoload() 関数の実装で最も重要なことは、クラス名と実際のディスク ファイルの間のマッピング ルールの実装であることもわかります。
しかし、ここで問題が発生します。システムの実装で他の多くのクラス ライブラリを使用する必要がある場合、これらのクラス ライブラリは異なる開発エンジニアによって開発され、クラス名と実際のディスク ファイルの間のマッピング ルールが異なる可能性があります。 。現時点で、クラス ライブラリ ファイルの自動ロードを実装したい場合は、すべてのマッピング ルールを __autoload() 関数に実装する必要があります。そのため、__autoload() 関数は非常に複雑になるか、実装が不可能になる可能性があります。最終的に、__autoload() 関数は実装できたとしても非常に肥大化する可能性があり、将来のメンテナンスとシステム効率に大きな悪影響を及ぼします。この場合、SPL 標準ライブラリが PHP5 で導入され、新しいソリューションは spl_autoload_register() 関数です。
2、spl_autoload_register()関数
この関数の機能は、SPLの__autoload関数スタックに関数を登録し、システムのデフォルトを削除することです_ _自動ロード() 関数。これは次の例で確認できます:
[cpp] view plaincopyprint?
構文: bool spl_autoload_register ( [callback $autoload_function] ) は 2 つのパラメータを受け入れます。1 つはオートロード スタックに追加される関数で、もう 1 つはローダーがこのクラスを見つけられない場合に例外をスローするかどうかを示すフラグです。最初の引数はオプションで、デフォルトでは spl_autoload() 関数を指します。この関数は、小文字のクラス名と .php 拡張子または .ini 拡張子、または spl_autoload_extensions( ) という名前のファイル。 [php] plaincopyprint を表示? public
static function ローダー($classname)
)$クラス名
).
".php "<?php class CalssLoader { public static function loader($classname) { $class_file = strtolower($classname).".php"; if (file_exists($class_file)){ require_once($class_file); } } } // 方法为静态方法 spl_autoload_register('CalssLoader::loader'); $test = new Test();
[php] view plaincopyprint?
if(false === spl_autoload_functions()){ if(function_exists('__autoload')){ spl_autoload_registe('__autoload',false); } }
spl_autoload_functions()函数会返回已注册函数的一个数组,如果SPL自动加载栈还没有被初始化,它会返回布尔值false。然后,检查是否有一个名为__autoload()的函数存在,如果存在,可以将它注册为自动加载栈中的第一个函数,从而保留它的功能。之后,可以继续注册自动加载函数。
还可以调用spl_autoload_register()函数以注册一个回调函数,而不是为函数提供一个字符串名称。如提供一个如array('class','method')这样的数组,使得可以使用某个对象的方法。
下一步,通过调用spl_autoload_call('className')函数,可以手动调用加载器,而不用尝试去使用那个类。这个函数可以和函数class_exists('className',false)组合在一起使用以尝试去加载一个类,并且在所有的自动加载器都不能找到那个类的情况下失败。
[php] view plaincopyprint?
f(spl_autoload_call('className') && class_exists('className',false)){ } else { }
以上就介绍了掼蛋游戏WEB版——PHP后台实现源码,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。