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

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

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

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

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

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

Basic

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

これは基本的な例です

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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 インターフェイスはパブリックである必要があり、インターフェイス内でクラス メンバーを定義することはできません。

原因

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

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

デカップリングに!

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

より高度な例

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

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

1

2

3

4

5

interface CacheInterface {

    public function set(string $key, $val);

    public function get(string $key);

    public function delete(string $key);

}

ログイン後にコピー

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

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

Symfony の例

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

1

2

3

4

5

6

7

8

9

use Symfony\Contracts\Cache\CacheInterface;

 

class MyClass {

    private $cache;

    public function __construct(CacheInterface $cache)

    {

        $this->cache = $cache;

    }

}

ログイン後にコピー

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

複数の実装 VS 多重継承

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

1

class MyClass extends ClassX, ClassY {}

ログイン後にコピー

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

ただし、

1

2

class ClassY extends ClassX {}

class MyClass extends ClassY {}

ログイン後にコピー

は実行できますが、

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

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

1

class MyClass implements InterfaceX, InterfaceY {}

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

概要

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

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

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

PHP チュートリアル 」]

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

関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
PHP 拡張子 intl
から 1970-01-01 08:00:00
0
0
0
phpのデータ取得?
から 1970-01-01 08:00:00
0
0
0
PHP GET エラー レポート
から 1970-01-01 08:00:00
0
0
0
phpを上手に学ぶ方法
から 1970-01-01 08:00:00
0
0
0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート