ホームページ > バックエンド開発 > PHPチュートリアル > PHP オートロードはクラスの自動ロードを実装します_PHP チュートリアル

PHP オートロードはクラスの自動ロードを実装します_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:44:53
オリジナル
898 人が閲覧しました

オートロードメカニズムにより、PHP プログラムは最初からすべてのクラスファイルを含めるのではなく、クラスが使用される場合にのみクラスファイルを自動的に含めることができます。このメカニズムは遅延ロードとも呼ばれます。

以下は、自動ロードメカニズムを使用して Person クラスをロードする例です:

PHPのオートロード機構の実装
コードは次のとおりです コードをコピー

/* autoload.php */
関数 __autoload($classname) {
require_once ($classname . “class.php”); }
$person = 新しい人物("アルタイル", 6); var_dump ($person); ?>


PHP でクラスの自動ロードを実装するには、マジック メソッド __autoload() について説明する必要があります。これは、PHP5 で追加された自動ロード クラス メソッドです。この関数が定義されている限り、PHP が実行されてクラスが見つからない場合、__autoload の規則に従って検索されます。

自分で計画し、set_include_path および get_include_path と組み合わせて使用​​すると、自動読み込みクラスがより完璧になり、コードが高速になります (magento を模倣):

コードは次のとおりですコードをコピーこのようにして、PHP のデフォルトのクラス読み込み環境を追加できます。ただし、ルールを追加し続けたい場合は、ここで __autoload 関数を定義します。オブジェクトが存在しないので、:spl_autoload_register メソッドを変更しました。以下は、magento の規則に従って作成したセットです。これは実際には magento に似ています。
$paths[] = BP .'ローカル';

$paths[] = DS .'ベース';

$paths[] = BP .


$appPath = implode(PS, $paths);
set_include_path($appPath . PS . get_include_path());


コードは次のとおりですコードをコピークラスの自動ロード {
/**

*自己対象

*

*/
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.comtru​​ehttp://www.bkjia.com/PHPjc/633080.html技術記事オートロード メカニズムにより、PHP プログラムは最初にすべてのクラス ファイルを含めるのではなく、クラスが使用される場合にのみクラス ファイルを自動的に含めることができます。このメカニズムは遅延ロードとも呼ばれます。 次は...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート