オートロードメカニズムにより、PHP プログラムは最初からすべてのクラスファイルを含めるのではなく、クラスが使用される場合にのみクラスファイルを自動的に含めることができます。このメカニズムは遅延ロードとも呼ばれます。
以下は、自動ロードメカニズムを使用して Person クラスをロードする例です:
コードは次のとおりです |
コードをコピー |
/* autoload.php */
関数 __autoload($classname) {
require_once ($classname . “class.php”);
}
$person = 新しい人物("アルタイル", 6);
var_dump ($person);
?>
| PHPのオートロード機構の実装
PHP でクラスの自動ロードを実装するには、マジック メソッド __autoload() について説明する必要があります。これは、PHP5 で追加された自動ロード クラス メソッドです。この関数が定義されている限り、PHP が実行されてクラスが見つからない場合、__autoload の規則に従って検索されます。
自分で計画し、set_include_path および get_include_path と組み合わせて使用すると、自動読み込みクラスがより完璧になり、コードが高速になります (magento を模倣):
コードは次のとおりです
コードをコピー
|
|
$paths[] = BP .'ローカル';
$paths[] = DS .'ベース';
$paths[] = BP .
$appPath = implode(PS, $paths);
set_include_path($appPath . PS . get_include_path());
| このようにして、PHP のデフォルトのクラス読み込み環境を追加できます。ただし、ルールを追加し続けたい場合は、ここで __autoload 関数を定義します。オブジェクトが存在しないので、:spl_autoload_register メソッドを変更しました。以下は、magento の規則に従って作成したセットです。これは実際には magento に似ています。
コードは次のとおりです
コードをコピー
|
|
クラスの自動ロード {
/**
*自己対象
**/
protected static $_instance = null;
パブリック関数 __construct() {
}
/*
* 自身をインスタンス化します
*
*/
パブリック静的関数instance() {
if (null == self::$_instance) {
self::$_instance = 新しい self();
}
self::$_instance を返す;
}
/**
*
*登録自動読み込み機能*/
パブリック静的関数 register() {
spl_autoload_register(array(self::instance(), ‘autoload’));
}
/*
*
* クラスを自動的にロードします
*/
パブリック関数 autoload($class) {
if (!is_string($class)) {
戻ります;
}
$classFile = str_replace(‘ ‘, DS, ucwords(str_replace(‘_’, ‘ ‘, $class)));
$classFile .= ‘.php’;
return include $classFile;
}
}
|
http://www.bkjia.com/PHPjc/633080.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/633080.html技術記事オートロード メカニズムにより、PHP プログラムは最初にすべてのクラス ファイルを含めるのではなく、クラスが使用される場合にのみクラス ファイルを自動的に含めることができます。このメカニズムは遅延ロードとも呼ばれます。 次は...