この記事では、PHP でクラスを自動的にロードする __autoload() メソッドについて簡単に説明します。このメソッドがすべての学生に役立つことを願っています。
機能: プログラム内でクラスをインスタンス化する必要があり、このクラスがこのファイルにない場合は、include 関数を使用して外部ファイルをインクルードする必要があります。ただし、使用する外部クラスが多数ある場合、組み込み関数を使用するのは非常に面倒になることがわかります。この場合、__autoload() グローバル関数を使用してクラスを自動的にロードできます。
index.php の最初の 3 つのクラスを使用したい場合、include("name.class.php") などの 3 つのメソッドを記述する必要があり、非常に非効率ですが、__autoload() 関数を使用する場合はいいえそんな面倒なことをする必要があるので、次のように関数メソッドを書くだけです:
PHP 5 では、これは必要なくなりました。まだ定義されていないクラスを使用しようとしたときに自動的に呼び出される __autoload() 関数を定義できます。この関数を呼び出すことにより、スクリプト エンジンは、PHP がエラーで失敗する前に、必要なクラスをロードする最後のチャンスを得ることができます。
次の例では、例を通して __autoload() がどのように使用されるかを説明します。
まずクラスClassAを定義します。ファイル名はClassA.class.phpです
コードは次のとおりです | コードをコピー |
クラスクラスA{ パブリック関数 funa(){ echo "classA が正常にロードされました! }
|
コードをコピー | |
パブリック関数 funb(){ echo "classB も正常にロードされました! "; } }
最後に、上の 2 つのファイルと同じディレクトリに別の autoload.php を定義します (このファイル名は任意に選択できます) |
コードは次のとおりです
require_once ("./".ucfirst($class_name).'.class.php');//ucfirst はクラス名の最初の文字を大文字に変換します } $obj = 新しいクラスB(); $obj->funa();$obj->funb(); ?>
autoload.php プログラムを実行し、結果を確認します: クラスAが正常にロードされました! | classB も正常にロードされました!
例: フォルダーの下に次のようなファイルがいくつかあります:
User.class.php;
パーソン.クラス.php;
Message.class.php;
インデックス.php;
コードは次のとおりです
コードをコピー
index.php | function __autoload($className){ //ucfirst() は文字列の最初の文字を大文字に変更します | ||||
*例: Index.php ファイルの User.class.php に User クラスをインスタンス化します。存在しない場合は、__autoload() 関数が自動的に呼び出されます。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
URL パラメータから取得した PHP 配列が期待どおりに動作しない
カテゴリ ID を含む URL パラメータがあり、それを次のような配列として扱いたいと考えています: http://example.com?cat[]=3,9,13 PHP では、...
から 2024-04-06 22:09:02
0
1
1428
戻り値の変数の形式は何ですか?
私はphpの初心者です。コードを見つけました: if($x<time()){return[false,'error'];} ロジックや変数は重要ではありませんが、[false...
から 2024-04-06 21:55:20
0
1
778
ループするために MySQL の結果を ID ごとにグループ化する
mysqlにフライトデータを含むテーブルがあります。 codeigniter3Journey_idair_idFlightDurationout_or_inflightdurati...
から 2024-04-06 17:27:56
0
1
406
関連トピック
詳細>
|