ホームページ >バックエンド開発 >PHPの問題 >PHPでポリモーフィズムを実装する方法

PHPでポリモーフィズムを実装する方法

(*-*)浩
(*-*)浩オリジナル
2019-09-12 10:58:562754ブラウズ

PHP5 では、変数の型は未定義です。変数は、任意の型の値、文字列、オブジェクト、リソースなどを指すことができます。 PHP5 のポリモーフィズムは変数であるとは言えません。

PHP5ではメソッドパラメータの型ヒント位置にポリモーフィズムが適用されているとしか言えません。

PHPでポリモーフィズムを実装する方法

クラスのサブクラス オブジェクトは、現在の型を型ヒントとして使用して型要件を満たすことができます。

このインターフェイスを実装するすべてのクラスは、インターフェイスの型を型ヒントとして使用してメソッド パラメーターの要件を満たすことができます。

簡単に言うと、クラスはその親クラスと実装されたインターフェイスの 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。