php の自動読み込み:
php5 より前では、特定のクラスまたはクラスメソッドを使用したい場合、クラスを使用するたびに include または require する必要があります。面倒な
php作者 簡単に言うと、現在インクルードがない場合は、システムが自動的にクラスを見つけて自動的に導入することができます~
そこで、__autoload()関数が登場しました。
通常、class_core.php に配置される discuz などのアプリケーション エントリ クラスに配置されます。
最初に簡単な例について話しましょう:
最初のケース: ファイル A.php の内容は次のとおりです
<?php class A{ public function __construct(){ echo 'fff'; } } ?> 文件C.php 中内容如下: <?php function __autoload($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } $a = new A(); //这边会自动调用__autoload,引入A.php文件 ?>
2 番目のケース: オートロードをカスタマイズし、ローダーにもっとクールな名前を付けたい場合があります。 C .php は次のように変更されます:
<?php function loader($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } spl_autoload_register('loader'); //注册一个自动加载方法,覆盖原有的__autoload $a = new A(); ?>
3 番目の状況: より高度になり、クラスを使用して自動読み込みを管理したいと考えています
<?php class Loader { public static function loadClass($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } } spl_autoload_register(array('Loader', 'loadClass')); $a = new A(); ?>
これが現時点で最良の形式です。
通常、spl_autoload_register(*)をエントリスクリプトに入れる、つまり最初から引用します。たとえば、次のようなディスカスアプローチがあります。
そうですこの段落をエントリーファイルの先頭に置くのは素晴らしいことです~