クラスのオーバーロードと自動ロード_PHP チュートリアル

WBOY
リリース: 2016-07-15 13:24:50
オリジナル
758 人が閲覧しました

PHP4 には、Java や COM と同様に、外部オブジェクト モデルへのマッピングを確立するためのオーバーロード構文がすでにあり、PHP5 は強力なオブジェクト指向オーバーロードを提供し、プログラマーがプロパティにアクセスするためのカスタム動作を作成したり、

メソッドを呼び出すことができます。 Zend エンジンがメンバーにアクセスしようとして見つからない場合、PHP はこれらのメソッドを呼び出します。例 1 では、__get と __set が属性変数配列へのすべてのアクセスを置き換えます。必要に応じて、任意のタイプのフィルタリングを実装できます。たとえば、スクリプトで属性値の設定を無効にしたり、特定のプレフィックスで開始したり、特定のタイプの値を含めたりすることができます。

__call メソッドは、未定義のメソッドを呼び出す方法を示しています。未定義のメソッドを呼び出すと、メソッド名とメソッドによって受け取られたパラメータが __call メソッドに渡され、PHP は __call の値を未定義のメソッドに返します。

ユーザーレベルのオーバーロード

<?php    class Overloader    {        private $properties = array();        function __get($property_name)        {            if(isset($this->properties[$property_name]))            {                return($this->properties[$property_name]);            }            else            {                return(NULL);            }        }        function __set($property_name, $value)        {            $this->properties[$property_name] = $value;        }        function __call($function_name, $args)        {            print("Invoking $function_name()<br>n");            print("Arguments: ");            print_r($args);            return(TRUE);        }    }    $o = new Overloader();    //invoke __set() 给一个不存在的属性变量赋值,激活__set()    $o->dynaProp = "Dynamic Content";    //invoke __get() 激活__get()    print($o->dynaProp . "<br>n");    //invoke __call() 激活__call()    $o->dynaMethod("Leon", "Zeev"); ?>
ログイン後にコピー
。 クラスの自動読み込み

未定義のクラスを使用しようとすると、PHP は致命的なエラーを報告します。解決策はクラスを追加することです。結局のところ、 include でファイルをインクルードすることができます。ただし、PHP にはクラスの自動ロード機能があり、PHP が体系化していないクラスを使用しようとすると、この関数のグローバル関数が検索されます。

例 図 2 は、スクリプトがクラス名を生成しようとするときに、現在のディレクトリ内の各ファイルがどのように使用されるかを示しています。 User クラスのインスタンスの場合、PHP は __autoload を実行します。このスクリプトは、User クラスが class_User.php で定義されていると想定します。呼び出しが大文字か小文字かに関係なく、PHP は小文字の名前を返します

りー

http://www.bkjia.com/PHPjc/446720.html
www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/446720.html技術記事 Java や COM と同じように、PHP4 には外部オブジェクト モデルへのマッピングを確立するためのオーバーロード構文がすでにあり、PHP5 は強力なオブジェクト指向オーバーロードを提供し、プログラマがカスタム動作を作成できるようにします。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!