ホームページ > バックエンド開発 > PHPチュートリアル > PHP がクラス __autoload() メソッドを自動的にロードする_PHP チュートリアル

PHP がクラス __autoload() メソッドを自動的にロードする_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:49:41
オリジナル
871 人が閲覧しました

この記事では、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 が正常にロードされました!
";

}

}

次に、同じディレクトリに別のクラス ClassB を定義します。ファイル名は ClassB.class.php で、ClassB は ClassA を継承します。

コードは次のとおりです クラス ClassB は ClassA を拡張します {
コードをコピー

パブリック関数 funb(){

echo "classB も正常にロードされました!
";

}

}

最後に、上の 2 つのファイルと同じディレクトリに別の autoload.php を定義します (このファイル名は任意に選択できます)

コードは次のとおりです

コードをコピー関数 __autoload($class_name) { classB も正常にロードされました!

require_once ("./".ucfirst($class_name).'.class.php');//ucfirst はクラス名の最初の文字を大文字に変換します

}

$obj = 新しいクラスB();

$obj->funa();

$obj->funb();

?>

autoload.php プログラムを実行し、結果を確認します:

クラスAが正常にロードされました!

例: フォルダーの下に次のようなファイルがいくつかあります:

User.class.php;

パーソン.クラス.php;

Message.class.php;
インデックス.php;

これが私たちにできる方法です




コードは次のとおりです

コードをコピー

include("ucfirst($className)".class.".php"); /**************
index.php function __autoload($className){ //ucfirst() は文字列の最初の文字を大文字に変更します

*例: Index.php ファイルの User.class.php に User クラスをインスタンス化します。存在しない場合は、__autoload() 関数が自動的に呼び出されます。

コードは次のとおりですコードをコピー
*、クラス名 User をパラメータとして渡します

***********/

$user=新しいユーザー();

//クラスの自動ロードを通じて User.class.php ファイルを呼び出します

$person=新しい人();

//クラスの自動ロードを通じて Person.class.php ファイルを呼び出します

$Message=新しいメッセージ();

//クラス function="" message="new" person="new" user="new"> を自動的にロードして、Message.classphp ファイルを呼び出します

http://www.bkjia.com/PHPjc/632689.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/632689.html技術記事この記事では、PHP でクラスを自動的にロードする __autoload() メソッドについて簡単に説明します。このメソッドがすべての学生に役立つことを願っています。 機能: インスタンスを作成する必要がある場合...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート