PHPの静的メソッド

 staticメソッド

(1)静的メソッドは、それらの属性がオブジェクトに属しているので、共通のクラス属性にアクセスすることができないが、静的プロパティにアクセスすることができます。

(2)現在のクラス(サブクラスではない)は、静的メソッドまたはプロパティからのアクセスには、自己のキーワード、現在のクラスへの自己ポインティング、現在のオブジェクトと同じに$のように、このポイントを使用することができます。

(3)を呼び出すと、クラスメソッドとクラスのプロパティと呼ばれ、従って擬似オブジェクト変数$にこれを使用することができないもはや被験者静的メソッド、スタティックメソッドとプロパティではありません。

静的メソッドの利点:

(1)任意の場所コードに(クラスがアクセスできると仮定して)使用することができます。

(2)クラスがクラスで定義された静的プロパティにアクセスすることができ、各インスタンスは、静的プロパティ値を設定するために使用することができ、そのクラス値のすべてのオブジェクトを使用することができます。

(3)オブジェクトのプロパティまたはメソッドの静的インスタンスにアクセスすることである必要はありません。

<?PHP 

$ =新しい新しいPDO PDO( 'MySQLの:ホスト= localhostの; DBNAME = mydbという'、 'ルート'); //はPDO(PHPデータオブジェクト)オブジェクトを作成

クラスShopProduct { 

    プライベート$タイトルを; //プロパティはとも呼ばれますオブジェクトデータとの間に互いに異なる格納するために使用されるメンバ変数、

    プライベートの$ producerMainName、すべてのプロパティはプライベートに設定されている//は、これらの特性の直接の外部アクセスを可能にし、所望の値の取得する方法はありません

    。プライベート$ producerFirstNameを

    保護します$価格; //プロパティに直接アクセス外停止は、サブクラスによってアクセスすることができます

    プライベートの割引= $ 0; 

    プライベート$上記のid = 0; 

 

    オブジェクトが作成されると、コンストラクタが自動的に呼び出され、//、施工方法は、必要なプロパティが設定されていることを確認することができますし、他に何も行う必要

    パブリック関数を__construct($タイトル、$ mainName、firstNameの$、$価格){ 

        の$ this - >タイトル$タイトルを=; // $各変数の代入のために、この擬似変数

        の$ this - > producerMainName = mainName $; 

        の$ this - > producerFirstName firstNameの= $;

        。。this- $>価格= $価格; 

    } 

 

    / ** 

     * @returnミックスこの方法はまた、ゲッターとセッターと呼ばれる「アクセス方法」と呼ばれる唯一のプロパティ値、返す

     * / 

    公共getProducerFirstName機能を()

    { 

        しますreturn $ this- > producerFirstName; 

    } 

 

    / ** 

     *姓ため@returnミックスのアクセス方法は、

     * / 

    公共getProducerMainName機能()

    { 

        しますreturn $ this-> producerMainName; 

    } 

 

    / ** 

     * @paramのNUM割引価格の$ 

     * / 

    パブリック関数のsetDiscount($ NUM)

    { 

        の$ this - > = $割引NUM; 

    } 

 

    / ** 

     * @return int型割引アクセス方法

     * /

    getDiscount関数パブリック()

    { 

        の$ this - >ディスカウントを返す; 

    } 

 

    / ** 

     * @return混合ブックのアクセスメソッド名またはCD名

     * / 

    パブリック関数のgetTitle()

    { 

        の$ this - >タイトルを返す; 

    } 

 

    / ** 

     * @割引復帰混合後の価格

     * / 

    パブリック関数getPrice()

    { 

        リターン(の$ this - >価格-の$ this - >割引。); 

    } 

 

    / ** 

     * @returnの文字列の著者

     * / 

    パブリック関数getProducer(){//メソッドを聞かせしますタスクを実行することを目的と

        ...しますreturn $ this-> producerMainName ''の$ this - > producerFirstName; 

    } 

 

    / **

     *要約請求書情報@return列

     * / 

    パブリックgetSummaryLine関数()

    { 

        $ BASE = "{の$ this - >表題}({の$ this - > producerMainName}、{の$ this - > producerFirstName})"; 

        $ BASEを返します。

    } 

 

    / ** 

     *アクセス方法の@paramの$識別ID、セッター

     * / 

    パブリック関数SETID($のID)

    { 

        の$ this - > $のID = ID; 

    } 

 

    //クエリデータのデータ型、返されるオブジェクトの特定のタイプShopProductこのメソッドは、インスタンスのプロパティとメソッドを使用していないので、それは静的メソッド(静的)として定義されている限り、有効なPDOオブジェクトが存在するとして、あなたはどこにでもプログラムでこのメソッドを呼び出すことができます。この方法は、工場出荷時と同じであるオブジェクトの特定の型を生成するために生データを受け入れることができます。

    静的関数のgetInstance公開(上記のid $、$ PDO PDO)

    { 

        $ stmtは= $ PDO - > PREPARE( "SELECT *製品の上記のIDを述べたWHERE = FROM?");

        $ STMT - >実行(配列($番号))。

        $行= $のSTMT - >(フェッチ)。

        IF(空($行)){ 

            戻りヌル。

        } 

        スイッチ($行[ 'タイプ'])

        { 

            ケース'ブック':

                $産物=新しいBookProduct($行[ 'タイトル']、$行[ 'FIRST_NAME']、$行[ 'main_name']、$行[ '価格']、$行[ 'NUM_PAGES']); 

            ブレーク; 

            ケース'CD':

                $製品=新CdProduct($行[ 'タイトル']、$行[ 'first_nameの']、$行[ 'main_name']、$行[ '価格']、$行[ 'play_length'] ); 

            ブレーク; 

            デフォルト :


            BREAK; 

        } 

        $の製品- > SETID($行[ 'ID']); 

        $製品- > setDiscount($行[ 'ディスカウント']); 

        戻り$製品; 

    } 

} 

 

//派生クラスのコンストラクタが定義されていない場合は、自動的に親クラスのコンストラクタを呼び出してインスタンス化されます。デフォルトのサブクラスは、すべての親クラスpublicおよびprotectedメソッドを継承しますが、プライベートではないメソッドとプロパティが継承され

ShopProduct拡張BookProductクラス

{ 

    プライベートの$ NUMPAGESを; 

 

    //各サブクラスのコンストラクタは、基本クラスになりましたそのプロパティを設定する前に、親クラスを呼び出します唯一の独自のデータ、親クラスのサブクラスで、一般的に特別な列を知って、あなたは親、子クラスについてのニュースを避けるべきです。

    パブリック($タイトル、$ mainName、$ firstNameという、$。価格、$ NUMPAGES)__construct機能

    { 

        //親キーワードは、現在のオブジェクト内の親クラスのメソッド呼び出しで親を展開して、親クラスのメソッド内の任意の複製方法で使用することができます代わりに::使用してのクラスの機能ではなく、クラスオブジェクトのメソッドを適用するには、 - > 

        親:: __構築物を($タイトル、$ mainName、firstNameの$、$の価格。);

        この$ - > = $ NUMPAGES NUMPAGES; 

    } 

 

    / ** 

     本の* @param $ NUMPAGESページ

     * @return混合ページ

     * / 

    公共getNumberOfPages機能()

    { 

        >しますreturn $ this- NUMPAGES; 

    } 

 

    / ** 

     *サブクラス(派生クラス)の修正および親(基本クラスまたはスーパー)機能覆ってもよい

     * @return列帳請求書要約情報

     * / 

    パブリックgetSummaryLine関数()

    { 

        ; $ ::基地=親getSummaryLine()

        $ベース。 = "ページ数- {の$ this - > NUMPAGESを}"; 

        $ BASEを返す; 

    } 

} 

 

クラスCdProduct ShopProduct延び

{ 

    専用の$ playLengthと、

 

    パブリック関数の__construct($タイトル、$ mainName、$ firstNameという、$価格、$ playLength)

    { 

        親:: __構築物($タイトル、$ mainName、$ firstNameの、$価格)。

        これを$ - > playLength = $ playLength。

    } 

 

    / ** 

     * @return int型播放时间

     * / 

    パブリック関数getPlayLength()

    { 

        $これを返す- > playLength。

    } 

 

    / ** 

     * @return文字列のCD发票的摘要信息

     * / 

    パブリック関数getSummaryLine()

    { 

        $ベース=親:: getSummaryLine(); 

        $ BASE = "プレイ時間- {の$ this - > playLength}"。

        $ベースを返します。

    } 

}

 

$物= ShopProduct ::のgetInstance(1 、$のPDO); // この静的メソッドIDは、特定生成するために、異なるタイプのオブジェクトを通過

IF($製品){ 

    印刷「著者:商品{$ - > getProducer()} < / BR> "; //著者:倫魯迅

    印刷"概要ライン:製品{$ - > getSummaryLine()} </ BR>「; //行のサマリー:香港Yiji(シュン、倫)ページには、COUNT - 200です

}

  

おすすめ

転載: www.cnblogs.com/68xi/p/11519022.html