PHP 7で多型を使用する方法PHP 7の多型
インターフェイスを使用してください。 実装を提供せずにメソッドシグネチャを指定します。 クラスからインターフェイスを実装し、メソッドの独自の具体的な実装を提供します。
この例では、およびは
オブジェクトとして扱われます。// 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(); }メソッドの特定の実装を提供する必要があります。
メソッドには抽象クラスにデフォルトの実装がありますが、サブクラスは必要に応じてそれをオーバーライドできます。既存のコード。 新しいクラスがインターフェイスを順守するか、抽象クラスを拡張している限り、シームレスに統合できます。Dog
Bird
Animal
コードの再利用性:move()
多型は、複数のクラスで動作するジェネリックコードを作成できるようにすることでコードの再利用を促進します。 これにより、コードの複製が削減され、保守性が向上します。speak()
設計の改善:
多型は、よりモジュール式で十分に構造化された設計につながります。 懸念の分離を促進し、よりクリーンなアーキテクチャを促進します。
- テスト可能性:
- 多型により、単体テストが容易になります。簡単にモックまたはスタブインターフェイスまたは抽象クラスを作成して、テストプロセスを簡素化できます。 保守性:1つのクラスへの変更は、アプリケーションの他の部分に影響を与える可能性が低くなります。 これにより、バグを導入するリスクが軽減され、メンテナンスが容易になります。
- カップリングのゆるい:多型は、クラス間の依存関係を減らします。 特定のクラスと直接対話する代わりに、コードはインターフェイスまたは抽象クラスと対話します。 これは、1つのクラスの変更がシステムの残りの部分を波及する可能性が低いことを意味します。 これは、固体設計の原理のオープン/クローズド原理に準拠しています。
- 簡単なリファクタリング:カップリングが緩んでいるため、リファクタリングは簡素化されます。 インターフェイスまたは抽象クラスの契約が維持されている限り、システムの他の部分に影響を与えることなく実装を変更または交換できます。
- デバッグの簡素化:モジュール性のため、エラーの原因を特定しやすくなります。 変更の影響はローカライズされ、追跡が容易です。
- さまざまなシナリオでの使用を示すPHP 7の多型の例を提供できますか? 、 、
を作成できます。 次に、このインターフェイスを実装するコンクリートクラス
およびを作成します。 アプリケーションコードは、実際のデータベースシステムに関係なく、インターフェイスを使用してデータベースと対話できます。 データベースの切り替えには、コンクリートクラスのインスタンス化を変更する必要があります。
シナリオ2:支払い処理:Database
connect()
query()
別の支払いゲートウェイ(Stripe、PayPal)がある場合があります。 disconnect()
などのメソッドを使用してMySQLDatabase
を作成します。 PostgreSQLDatabase
やDatabase
などの実装は、各ゲートウェイの詳細を処理します。 ショッピングカートアプリケーションは、
シナリオ3:ロギング:
PaymentGateway
さまざまなロギングメカニズム(ファイル、データベース、電子メール)は、インターフェイスを使用して実装できます。 processPayment()
、StripePaymentGateway
、PayPalPaymentGateway
などのコンクリートクラスは、特定のロギング方法を処理します。アプリケーションは、PaymentGateway
インターフェイスを使用して、コアコードを変更せずにロギング戦略を選択する柔軟性を提供します。
これらの例は、特定の実装からアプリケーションロジックを分離することにより、多型が柔軟性、保守性、および拡張性をどのように促進するかを示しています。 これにより、よりクリーンで、より堅牢で、維持が容易なPHP 7アプリケーションになります。
以上がPHP 7で多型を使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

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

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

Dreamweaver Mac版
ビジュアル Web 開発ツール
