ホームページ php教程 php手册 PHPクラスの自動ロード機構

PHPクラスの自動ロード機構

Sep 19, 2016 am 08:54 AM

php:

の自動読み込み

php5より前は、特定のクラスやクラスメソッドを使いたい場合、クラスを使うたびにインクルードかrequireを書く必要があり、面倒でした

PHP 作成者は、クラスを参照するのが最善です。現時点でインクルードがない場合、システムが自動的にクラスを見つけて自動的に導入します~

そこで、__autoload() 関数が登場しました。

通常は、class_core.php に配置される discuz などのアプリケーション エントリ クラスに配置されます。

まず簡単な例について話しましょう:

最初の状況: ファイル A.php の内容は次のとおりです

クラスA{

パブリック関数 __construct(){

エコー「fff」;

}

}

?>

ファイル C.php の内容は次のとおりです:

function __autoload($class)
{
$file = $class .php';
if (is_file($file)) {
require_once($file)
}
$ a = new A(); //__autoload がここで自動的に呼び出され、A.php ファイルが導入されます

?>

2 番目のケース:

オートロードをカスタマイズして、ローダーにわかりやすい名前を付けたい場合があるため、C.php を次のように変更する必要があります: 関数ローダー($class)

{
$file = $class . '.php';
if (is_file($file)) {
require_once($file);
}
}

spl_autoload_register('loader'); //元の __autoload

を上書きして、自動読み込みメソッドを登録します。

$a = 新しい A();

?>

3 番目の状況

: より高度になり、クラスを使用して自動読み込みを管理したいと考えています クラスローダー

{
パブリック静的関数loadClass($class)
{
$file = $class .php';
if (is_file($file)) {
require_once($file);
}
}
}

spl_autoload_register(array('Loader', 'loadClass'));

$a = new A();

?>

現時点でのベストフォーム。

通常は、エントリースクリプトにspl_autoload_register(*)を入れます。つまり、最初から引用します。たとえば、次のようなディスカスアプローチがあります。

if(function_exist('spl_autoload_register')){

spl_autoload_register(array('core','autoload')); //php5以降で登録関数がある場合は自動ロード関数として書いたコアクラスに登録します

}その他{

function __autoload($class){ //そうでない場合は、PHP ネイティブ関数 __autoload 関数を書き換えて、独自のコア関数を呼び出すようにします。

return core::autoload($class);

}

}

この段落をエントリーファイルの先頭に置くのは素晴らしいことです~

転載: http://www.cnblogs.com/zhongyuan/p/3583201.html

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)