PHP 7で多型を使用する方法PHP 7の多型
インターフェイスを使用してください。 実裝を提供せずにメソッドシグネチャを指定します。 クラスからインターフェイスを?qū)g裝し、メソッドの獨自の具體的な実裝を提供します。
この例では、およびは
オブジェクトとして扱われます。// Define an interface interface Shape { public function getArea(); } // Implement the interface in different classes class Circle implements Shape { private $radius; public function __construct($radius) { $this->radius = $radius; } public function getArea() { return pi() * $this->radius * $this->radius; } } class Square implements Shape { private $side; public function __construct($side) { $this->side = $side; } public function getArea() { return $this->side * $this->side; } } // Using polymorphism $shapes = [new Circle(5), new Square(4)]; foreach ($shapes as $shape) { echo "Area: " . $shape->getArea() . PHP_EOL; }ループは、両方のタイプを含む配列を介して繰り返し、それぞれに
を呼び出します。 正しい実裝は、実際のオブジェクトタイプに応じて実行されます。Circle
Square
Shape
抽象クラスを使用して:foreach
getArea()
ここでは、
および>継承を継承し、// Define an abstract class abstract class Animal { public function speak() { echo "Generic animal sound" . PHP_EOL; } abstract public function move(); } // Extend the abstract class class Dog extends Animal { public function move() { echo "Dog is running" . PHP_EOL; } } class Bird extends Animal { public function move() { echo "Bird is flying" . PHP_EOL; } } // Using polymorphism $animals = [new Dog(), new Bird()]; foreach ($animals as $animal) { $animal->speak(); $animal->move(); }メソッドの特定の実裝を提供する必要があります。
メソッドには抽象クラスにデフォルトの実裝がありますが、サブクラスは必要に応じてそれをオーバーライドできます。既存のコード。 新しいクラスがインターフェイスを順守するか、抽象クラスを拡張している限り、シームレスに統(tǒng)合できます。Dog
Bird
Animal
コードの再利用性:move()
多型は、複數(shù)のクラスで動作するジェネリックコードを作成できるようにすることでコードの再利用を促進(jìn)します。 これにより、コードの複製が削減され、保守性が向上します。speak()
設(shè)計の改善:
多型は、よりモジュール式で十分に構(gòu)造化された設(shè)計につながります。 懸念の分離を促進(jìn)し、よりクリーンなアーキテクチャを促進(jìn)します。
- テスト可能性:
- 多型により、単體テストが容易になります。簡単にモックまたはスタブインターフェイスまたは抽象クラスを作成して、テストプロセスを簡素化できます。 保守性:1つのクラスへの変更は、アプリケーションの他の部分に影響を與える可能性が低くなります。 これにより、バグを?qū)毪工毳辚攻X減され、メンテナンスが容易になります。
- カップリングのゆるい:多型は、クラス間の依存関係を減らします。 特定のクラスと直接対話する代わりに、コードはインターフェイスまたは抽象クラスと対話します。 これは、1つのクラスの変更がシステムの殘りの部分を波及する可能性が低いことを意味します。 これは、固體設(shè)計の原理のオープン/クローズド原理に準(zhǔn)拠しています。
- 簡単なリファクタリング:カップリングが緩んでいるため、リファクタリングは簡素化されます。 インターフェイスまたは抽象クラスの契約が維持されている限り、システムの他の部分に影響を與えることなく実裝を変更または交換できます。
- デバッグの簡素化:モジュール性のため、エラーの原因を特定しやすくなります。 変更の影響はローカライズされ、追跡が容易です。
- さまざまなシナリオでの使用を示すPHP 7の多型の例を提供できますか? 、 、
を作成できます。 次に、このインターフェイスを?qū)g裝するコンクリートクラス
およびを作成します。 アプリケーションコードは、実際のデータベースシステムに関係なく、インターフェイスを使用してデータベースと対話できます。 データベースの切り替えには、コンクリートクラスのインスタンス化を変更する必要があります。
シナリオ2:支払い処理:Database
connect()
query()
別の支払いゲートウェイ(Stripe、PayPal)がある場合があります。 disconnect()
などのメソッドを使用してMySQLDatabase
を作成します。 PostgreSQLDatabase
やDatabase
などの実裝は、各ゲートウェイの詳細(xì)を処理します。 ショッピングカートアプリケーションは、
シナリオ3:ロギング:
PaymentGateway
さまざまなロギングメカニズム(ファイル、データベース、電子メール)は、インターフェイスを使用して実裝できます。 processPayment()
、StripePaymentGateway
、PayPalPaymentGateway
などのコンクリートクラスは、特定のロギング方法を処理します。アプリケーションは、PaymentGateway
インターフェイスを使用して、コアコードを変更せずにロギング戦略を選択する柔軟性を提供します。
これらの例は、特定の実裝からアプリケーションロジックを分離することにより、多型が柔軟性、保守性、および拡張性をどのように促進(jìn)するかを示しています。 これにより、よりクリーンで、より堅牢で、維持が容易なPHP 7アプリケーションになります。
以上がPHP 7で多型を使用する方法は?の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

Undresser.AI Undress
リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover
寫真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中國語版
中國語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)