ホームページ > バックエンド開発 > PHPチュートリアル > PHP でのインターフェイスの使用について話します。

PHP でのインターフェイスの使用について話します。

青灯夜游
リリース: 2023-04-09 10:48:02
転載
3220 人が閲覧しました

PHP でのインターフェイスの使用について話します。

確かに、PHP インターフェイスにはその目的があります。

これらは、他の開発者向けの契約書、取扱説明書です。ただし、このインターフェイスが何に使用されるのかを理解するのはまだ困難です。

Basic

Interface は、直接インスタンス化することはできませんが、実装することはできる抽象クラスです。

これは基本的な例です

interface MyInterface {
    public function setName(string $name);
    public function getName();
}

class MyClass implements MyInterface {
    private $name; 

    public function setName(string $name) { 
        $this->name = $name; 
    }

    public function getName() {
        return $this->name; 
    }
}
ログイン後にコピー

MyClasssetName() メソッドと getName() メソッドを実装する必要があります。これを行わないと、致命的なエラーが発生します。

致命的エラー: クラス MyClass には 2 つの抽象メソッドが含まれているため、抽象として宣言するか、残りのメソッド (MyInterface::setName、MyInterface::getName) を実装する必要があります。

さらに、 Accessibility インターフェイスはパブリックである必要があり、インターフェイス内でクラス メンバーを定義することはできません。

原因

開発者はインターフェイスを使用して、クラスまたはクラスのグループの一般的な動作を記述します。

しかし、なぜ実装をカプセル化することのみを担当し、各クラスの詳細を処理することを担当しないのでしょうか?

デカップリングに!

インターフェイスを使用すると、詳細、つまりこの実装の使用方法を変更せずに実装を変更できます。

より高度な例

キャッシュ システムには次の機能が必要です

  • キャッシュ コンテンツへの保存/セットアップ
  • キャッシュ内のコンテンツを取得します
  • キャッシュ内のコンテンツを削除します
#これに基づいて、次のキャッシュ インターフェイスを作成できます

interface CacheInterface {
    public function set(string $key, $val);
    public function get(string $key);
    public function delete(string $key);
}
ログイン後にコピー

このようにして、開発者はキャッシュ インターフェイスを実装する必要があることを知ることができ、その実装方法を知る必要はありません。その結果、キャッシュ システムの使用方法を変更せずに、キャッシュ システムを簡単に切り替えることができます。

したがって、プロジェクトでのキャッシュ システムの使用方法を変更せずに、キャッシュ システムを簡単に変更できます。

Symfony の例

先ほどの例の具体的な応用を見てみましょう。 Symfony の場合、キャッシュ システムを実装する場合のベスト プラクティスは、次のように実行することです。

use Symfony\Contracts\Cache\CacheInterface;

class MyClass {
    private $cache;
    public function __construct(CacheInterface $cache)
    {
        $this->cache = $cache;
    }
}
ログイン後にコピー

依存関係注入を通じてクラスにキャッシュ インターフェイスを挿入します。次回キャッシュ システムを変更するときは、MyClass クラスを変更する必要はありません。

複数の実装 VS 多重継承

PHP は多重継承をサポートしていないため、次の方法は不可能です

class MyClass extends ClassX, ClassY {}
ログイン後にコピー

の一部これが許可されない理由は、ダイヤモンドの問題によるものです。

ただし、

class ClassY extends ClassX {}
class MyClass extends ClassY {}
ログイン後にコピー

は実行できますが、

ClassXClassY は実行できる可能性があります。処理されるものは異なるため、継承を使用することは意味がありません。

複数の動作を実行したい場合は、複数のインターフェイスを持つことができます

class MyClass implements InterfaceX, InterfaceY {}
ログイン後にコピー
言い換えると、親クラスを共有する代わりに、一部のクラスに機能の一部を共有させることができます。

概要

PHP インターフェイスはクラスのメソッド テンプレートであり、分離された実装と使用に非常に役立ちます。

この機能は、柔軟性を維持し、すべての開発者が一連のルールに従っていることを確認する必要がある場合に特に役立ちます。

[関連チュートリアルの推奨事項:「

PHP チュートリアル 」]

以上がPHP でのインターフェイスの使用について話します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート