PHP5 では、変数の型は未定義です。変数は、任意の型の値、文字列、オブジェクト、リソースなどを指すことができます。 PHP5 のポリモーフィズムは変数であるとは言えません。
PHP5ではメソッドパラメータの型ヒント位置にポリモーフィズムが適用されているとしか言えません。
クラスのサブクラス オブジェクトは、現在の型を型ヒントとして使用して型要件を満たすことができます。
このインターフェイスを実装するすべてのクラスは、インターフェイスの型を型ヒントとして使用してメソッド パラメーターの要件を満たすことができます。
簡単に言うと、クラスはその親クラスと実装されたインターフェイスの ID を持ちます。
インターフェイスの実装によるポリモーフィズム (推奨学習: PHP プログラミングの入門から習熟まで )
<?php interface User{ // User接口 public function getName(); public function setName($_name); } class NormalUser implements User { // 实现接口的类. private $name; public function getName(){ return $this->name; } public function setName($_name){ $this->name = $_name; } } class UserAdmin{ //操作. public static function ChangeUserName(User $_user,$_userName){ $_user->setName($_userName); } } $normalUser = new NormalUser(); UserAdmin::ChangeUserName($normalUser,"Tom");//这里传入的是 NormalUser的实例. echo $normalUser->getName(); ?>
インターフェイスと組み合わせのシミュレーションの使用 多重継承
合成を通じて多重継承をシミュレートします。
PHP では多重継承はサポートされていません。複数のクラスのメソッドを使用してコードを再利用したい場合、方法はありますか?
それは組み合わせです。あるクラスで、別のクラスをプロパティとして設定します。
次の例では、多重継承をシミュレートします。
インターフェイスの例
概念的な例を作成します。私たちはオンライン販売システムを設計していますが、ユーザー部分は次のように設計されています。ユーザーはNormalUser、VipUser、InnerUserの3種類に分類されます。ユーザーが購入した製品の価格は、ユーザーのさまざまな割引に基づいて計算する必要があります。また、将来の拡張やメンテナンスのためにスペースを確保しておく必要があります。
rree以上がPHPでポリモーフィズムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。