多状態を達成するためにどのようにPHP?

PHP5では、変数の型が不明である、変数は、数値、文字列、オブジェクトのリソースのいずれかのタイプを指すことができます。私たちは、PHP5多型変数であると言うことはできません。

 

私たちはPHP5のための頭出し位置の種類、多状態のアプリケーションのメソッドのパラメータと言うことができます。

クラスの任意のサブクラスのオブジェクトは、即時型の要件のタイプとして、現在のタイプを満たすことができます。

すべてのクラスは、パラメータプロンプトとして要件タイプのすべてのタイプを満たすためのインタフェースを、このインターフェイスを実装します。

簡単に言えば、クラスは親クラスを持っている、とのインターフェースのアイデンティティが実装されました。

インタフェースを介して多型を実現する(推奨研究:マスターへのエントリからPHPプログラミング)

?<phpinterfaceユーザー{//ユーザー接口パブリック関数のgetName(); パブリック関数のsetName($ _名);}クラスNormalUserは、ユーザー{//实现接口的类を実装しています。プライベート$名; パブリック関数のgetName(){返します$ this->名前; }パブリック関数のsetName($ _名){の$ this  - >名= $ _name。}}クラスUSERADMIN {//操作。パブリック静的関数ChangeUserName(ユーザ$ _user、$ _のuserName){$ _user->のsetName($ _のuserName)。}} $ normalUser =新しいNormalUser(); USERADMIN :: ChangeUserName($ normalUser、 "トム"); //这里传入的是NormalUser的实例.echo $ normalUser->のgetName();?>

アナログインタフェースと多重継承の組み合わせを使用

シミュレーションを組み合わせることにより、多重継承。

我々はそこにそれを再利用する方法を複数のクラスを使用する方法にコードを達成するためにしている場合、PHPは、多重継承をサポートしていませんか?

それは、ポートフォリオです。別のクラスに1つのクラスにおいて属性として設定されます。

次の例では、多重継承をシミュレートします。

インターフェイスインスタンス

概念の一例を書きます。NormalUser、ユーザーに、VipUser、InnerUser 3を次のように私たちは、オンライン販売システム、設計のユーザ部分を設計しました。異なるユーザーの要件、製品の価格に応じて算出した割引を購入します。そして、予備スペースの今後の拡張やメンテナンスのための要件。

<?phpinterfaceユーザー{パブリック関数のgetName()。パブリック関数のsetName($ _名)。パブリック関数getDiscount();}抽象クラスAbstractUserは、ユーザー{プライベート$名= "" を実装します。保護された$割引= 0; 保護された$グレード= ""; 関数__construct($ _名){の$ this  - >のsetName($ _名); }関数のgetName(){の$ this  - >名前を返します。}関数のsetName($ _名){の$ this  - >名= $ _name。}関数getDiscount(){>割引の$ this  - を返します。}関数getGrade(){戻りの$ this  - >グレード。}}クラスNormalUserはAbstractUser {保護$割引​​= 1.0を拡張します。保護された$グレード= "ノーマル";}クラスVipUserがAbstractUser {保護$割引​​= 0.8を拡張します。保護された$グレード=「VipUser」。}クラスInnerUserはAbstractUser {保護$割引​​= 0.7を拡張します。保護$グレード= "InnerUser";}インターフェース製品{関数getProductName()。関数getProductPrice();}クラスBookOnline帳{プライベート$の商品名を実装;}インターフェース帳商品{関数GETAUTHORを()に延び、保護$ productPrice。$ Authorを保護。関数__construct($ _ bookName){の$ this  - >商品名= $ _bookName。}関数getProductNameは(){の$ this  - >商品名を返します。}関数getProductPrice(){の$ this  - > productPrice = 100。の$ this  - > productPriceを返します。}パブリック関数GETAUTHOR(){の$ this  - > = "chenfei" 著者。の$ this  - >著者を返します。}}クラスProductsettle {パブリック静的関数finalPrice(ユーザの$ _user、製品の$ _product、

 

おすすめ

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