ホームページ  >  記事  >  バックエンド開発  >  php自動読み込み_PHPチュートリアル

php自動読み込み_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-14 10:07:50790ブラウズ

PHPには2つの自動ロード機構関数があります

[php]
__autoload();
spl_autoload_register();
1. __autoload()
クラスを使用する必要がある場合は、ファイルをプログラムにロードできます
[php]
関数 __autoload($className) {
if (file_exists($className . '.php')) {
include $className . '.php';// 改良可能
} その他 {
echo $className . '.php が存在しません。';
終了
}
}
$indexController = 新しい IndexController();
プログラムの実行中に、PHP は $className クラスがロードされているかどうかを検出し、ロードされていない場合は __autoload() を実行して、$className クラスをロードします。クラス オブジェクトをインスタンス化するとき、クラス内の静的変数やメソッドにアクセスするときなど、クラスがロードされているかどうか、および __autoload() 関数が定義されているかどうかがチェックされます。定義されていない場合は、エラーが報告されます。
より複雑なシステムでは、__autoload() を使用してクラスの自動ロードを実装することが複雑になる場合があります。
2.spl_autoload_register()
[php]
spl_autoload_register();
$index = 新しいインデックス();
spl_autoload_register() 関数にはパラメータがなく、void spl_autoload (string $class_name [,string $file_extensions]) 関数がデフォルトで自動的に実装されます。デフォルトでは .php と .ini がサポートされます。
[php]
関数load1($className) {
//
を含める
}
関数load2($className) {
//
を含める
}
spl_autoload_register('load1');//spl_autoload_functions に登録します。
spl_autoload_register('load2');
$index = 新しいインデックス();
load1 にクラスが存在しない場合は、load1 を介してクラスがロードされます。存在する場合、クラスは同じ方法でロードされます。
自動読み込みを実装するにはさまざまな方法があります。ここに例を示します。
[php]
クラスオートローダー {
パブリック静的 $loader
パブリック静的関数init()
{
if (self::$loader == NULL)
$ セルフ :: $ ローダー = 新しいセルフ
;
return self::$loader;
}
パブリック関数 __construct()
{
spl_autoload_register(array($this,'model'));
spl_autoload_register(array($this,'helper'))
spl_autoload_register(array($this,'controller'));
spl_autoload_register(array($this,'library'));
}
パブリック関数ライブラリ($class)
{
set_include_path(get_include_path().PATH_SEPARATOR.'/lib/');
spl_autoload_extensions('.library.php');
spl_autoload($class)
}
パブリック関数コントローラー($class)
{
$class = preg_replace('/_controller$/ui','',$class);
set_include_path(get_include_path().PATH_SEPARATOR.'/controller/');
spl_autoload_extensions('.controller.php');
spl_autoload($class)
}
パブリック関数モデル($class)
{
$class = preg_replace('/_model$/ui','',$class);
set_include_path(get_include_path().PATH_SEPARATOR.'/model/');
spl_autoload_extensions('.model.php');
spl_autoload($class)
}
パブリック関数ヘルパー($class)
{
$class = preg_replace('/_helper$/ui','',$class);
set_include_path(get_include_path().PATH_SEPARATOR.'/helper/');
spl_autoload_extensions('.helper.php');
spl_autoload($class)
}
}
//電話
オートローダー::init();
?>
独自のニーズに応じて設計して実装することもできます
http://www.bkjia.com/PHPjc/477831.html
www.bkjia.com
tru​​e

http://www.bkjia.com/PHPjc/477831.html技術記事 php には 2 つの自動ロード メカニズム関数があります [php] __autoload(); spl_autoload_register(); 1. __autoload() は、クラスを使用する必要がある場合にプログラムにファイルをロードできます [php] ?php 関数...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。