ホームページ > バックエンド開発 > PHPチュートリアル > PHP でのクラス自動読み込みインスタンス分析

PHP でのクラス自動読み込みインスタンス分析

小云云
リリース: 2023-03-22 20:26:02
オリジナル
1306 人が閲覧しました

PHP の別のファイルで PHP コードを使用する必要がある場合は、include、include_once、require、require_once を使用してクラス ファイルを導入できます。 require と include の違いは構文の厳密さの違いです。インポートされたファイルでエラーが発生すると、include 構文を使用してエラーが報告されますが、後続のステートメントは引き続き実行されます。 require はエラーが発生した後に実行を停止します。

include と include_once の違いは、 include を使用すると、ファイルが存在する場合に 1 回インポートされるのに対し、 include_once は同じファイルがインポートされるときに 1 回だけインポートされることです。

一般に、多数のインポートされたファイルが使用される可能性があるため、多数の include/require ステートメントを記述する必要があります。このような状況では、自動読み込みを使用すると非常に不便です。

1. __autoload() マジック関数を使用します:

プログラムが「クラスを必要とする」場合、システムはこの関数を自動的に呼び出します。この関数は自分で定義する必要があります:

function __autoload($className){
	require "需要引入文件的路径(不包含文件名)".$className.".php";
}
ログイン後にコピー

変数 $className が自動的に呼び出しますこの関数は渡されるクラス名です。

2. spl_autoload_register() 関数を使用します。

複数の __autoload() 関数を宣言するために使用します。

spl_autoload_register("関数名 1" );....この関数は実際には __autoload(); と同じです

//此处声明三个自动加载函数名,
spl_autoload_register('auto1');
spl_autoload_register('auto2');
spl_autoload_register('auto2');
//接下来需要定义所声明的函数。
function auto1($className){
	$file="文件路径".$className.".php";
	if(file_exists($file)){
		require $file;
	}
}
function auto2($className){
	$file="文件路径".$className.".php";
	if(file_exists($file)){
		require $file;
	}
}
function auto2($className){
	$file="文件路径".$className.".php";
	if(file_exists($file)){
		require $file;
	}
}
ログイン後にコピー
在使用该方法时,需要类时,会按照声明的顺序先从auto1()调用,如果有的话就引入,如果不存在,就到下一个函数调用......
ログイン後にコピー

spl_autoload_register() と __autoload() の違いは、 spl_autoload_register() がファイル パスに異なるファイルを導入できることです。また、spl_autoload_register() がファイルに登録されている場合、メソッド __autoload() は自動的に無効になります。

関連する推奨事項:

PHP は自動ロード機能を実装します

PHP はルーティングとクラスの自動ロードを実装します

PHP は関連関数の自動ロードを実装します

以上がPHP でのクラス自動読み込みインスタンス分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート