PHPのポリモーフィズムを説明します。
そもそも、ポリモーフィズムはギリシャ語のポリ(多くを意味する)と射(形を意味する)から得られます。
ポリモーフィズムは、同様のことを行うさまざまなクラスのメソッドが同様の名前を持つ必要があるオブジェクト指向プログラミングの例を示しています。ポリモーフィズムは本質的にOOPパターンであり、さまざまな機能を持つ多数のクラスがcommonInterfaceを実行または共有できるようにします。ポリモーフィズムの有用性は、異なるクラスで記述されたコードは、同じように使用されるため、どのクラスに属するかには影響しないことです。クラスがポリモーフィズムガイドラインを確実に実装するようにするために、抽象クラスまたはインターフェースの2つの選択肢のいずれかを選択できます。
それでは、インターフェースを使用してポリモーフィズムの原則を実装しましょう。
インターフェイスインターフェイスは、コードを含めることができないことを除いて、クラスに似ています。インターフェイスはメソッド名と引数を定義できますが、メソッドの内容を定義することはできません。インターフェイスを実行するクラスは、インターフェイスによって特徴付けられるすべてのメソッドを実行する必要があります。
例:
<?php interface Machine { public function calcTask(); } class Circle implements Machine { private $radius; public function __construct($radius){ $this -> radius = $radius; } public function calcTask(){ return $this -> radius * $this -> radius * pi(); } } class Rectangle implements Machine { private $width; private $height; public function __construct($width, $height){ $this -> width = $width; $this -> height = $height; } public function calcTask(){ return $this -> width * $this -> height; } } $mycirc = new Circle(3); $myrect = new Rectangle(3,4); echo $mycirc->calcTask(); echo $myrect->calcTask(); ?>
出力:
28.274 12
説明:
「Machine」という名前のインターフェースは、それを実装するすべてのクラスをコミットして、calcTask()という名前の抽象メソッドを定義します。それに応じて、Circleクラスは、その中にそれぞれの本体を含むcallTask()メソッドを定義することによってインターフェースを実装します。長方形クラスもMachineインターフェースを実装しますが、円クラスCalTask()メソッドとは異なる本体でメソッドcalcTask()を定義します。ポリモーフィズムのガイドラインによると、この状況では、タスクを計算するすべてのメソッドに同等の名前が付けられます。ここで、さまざまなクラスのタスクを計算する必要がある時点で、さまざまなマシンのタスクを実際に計算する方法の詳細をあまり考慮せずに、calcTask()という名前のメソッドを呼び出します。知っておく必要がある主なことは、タスクを計算するメソッドの名前です。
-
PHPのSTATICANDINSTANCEメソッドについて説明します。
PHPでは、静的メソッドよりもインスタンスメソッドの方が適しています。いずれにせよ、静的メソッドが役に立たないと言っているのではなく、明確でユニークな目的があります。ここでは、PHPの静的メソッドとインスタンスメソッドの比較について説明します。 ここで、インスタンスメソッドは常にクラスのオブジェクトに接続されているのに対し、静的メソッドは常にクラスに接続されていることに注意してください。 最初に静的メソッドについて話します。 PHPの静的メソッドは、他のオブジェクト指向プログラミング言語と同じです。 PHPで静的メソッドを使用する場合の重要なケース。静的メソッドは、特定の情報がクラス全体で
-
PHPのinterface_exists()関数
interface_exists()関数は、インターフェイスが定義されているかどうかを確認します。 name_of_interfaceで指定されたインターフェースが定義されている場合はTRUEを返し、そうでない場合はFALSEを返します。 構文 interface_exists(name_of_interface, autoload) パラメータ name_of_interface −インターフェース名。 自動読み込み −デフォルトで__autoloadを呼び出すかどうか 戻る name_of_interfaceで指定されたインターフェイスが定義されている場合、inter