ホームページ >バックエンド開発 >PHPの問題 >PHPでトレイトを使用する方法

PHPでトレイトを使用する方法

王林
王林転載
2021-05-04 15:00:112292ブラウズ

PHPでトレイトを使用する方法

1. php にはどのような特性があるかご存知ですか?

これはクラスとインターフェイスの両方のように見えますが、実際にはどちらでもありません。

Trait は、1 つ以上の既存の PHP クラスに混合できるクラスの部分的な実装と見なすことができ、クラスが実行できることを示す機能と、モジュール実装を提供する機能の 2 つがあります。 Trait は、PHP の単一継承制限に対する柔軟なコード再利用メカニズムを提供するコード再利用テクノロジです。

2. PHP バージョン要件:

トレイトは php5.4 以降導入されており、その目的はコードの重複を減らし、コードの再利用性を高めることです。

3. トレイトの使用シナリオ:

次のような状況を想像してください。メソッドを多くのクラスで使用する必要がある場合、どのように対処すればよいでしょうか?

通常、一般的なアプローチは、基本クラスを作成し、このメソッドを基本クラスに実装し、すべてのクラスがこの基本クラスを継承することです。

これは対処方法ですが、最善の対処方法ではありません。継承は通常、複数のクラスに大きな類似性がある場合に使用されます。たとえば、people は基本クラスであり、学生や労働者などは基本クラスの「people」を継承して拡張します。

ここでトレイトの役割が出てきますが、トレイトは複数のクラスで使用することができます。

4. 特性の使用方法:

PHP マニュアルの例を引用:

例 1

<?php
trait ezcReflectionReturnInfo {
    function getReturnType() { /*1*/ }
    function getReturnDescription() { /*2*/ }
}

class ezcReflectionMethod extends ReflectionMethod {
    use ezcReflectionReturnInfo;
    /* ... */
}

class ezcReflectionFunction extends ReflectionFunction {
    use ezcReflectionReturnInfo;
    /* ... */
}
?>

1. 最初に特性を宣言します;

2. クラス内で use を使用して特性を紹介します。

それは非常に簡単です (手動エスケープ)?注意すべきは特性の優先順位です。

(無料の学習ビデオ共有: php ビデオ チュートリアル)

5. 特性の優先順位

(黒板をノック) 基本クラスから継承されたメンバー特性によって挿入されたメンバーによって上書きされます。優先順位は、現在のクラスのメンバーがトレイトのメソッドをオーバーライドし、トレイトが継承されたメソッドをオーバーライドすることです。

優先順位: 独自のメソッド > トレイト メソッド > 継承されたメソッド (このように見えます。)

例を見てください

<?php
trait HelloWorld {
    public function sayHello() {
        echo &#39;Hello World!&#39;;
    }
}

class TheWorldIsNotEnough {
    use HelloWorld;
    public function sayHello() {
        echo &#39;Hello Universe!&#39;;
    }
}

$o = new TheWorldIsNotEnough();
$o->sayHello();//输出是 Hello Universe!
?>

もう 1 つ注意すべき点は、次のとおりです。複数の特性。

<?php
trait Hello {
    public function sayHello() {
        echo &#39;Hello &#39;;
    }
}

trait World {
    public function sayWorld() {
        echo &#39;World&#39;;
    }
}

class MyHelloWorld {
    use Hello, World;
    public function sayExclamationMark() {
        echo &#39;!&#39;;
    }
}

$o = new MyHelloWorld();
$o->sayHello();
$o->sayWorld();
$o->sayExclamationMark();
?>

概要: Trait は、PHP の単一継承制限に対する柔軟なコード再利用メカニズムを提供するコード再利用テクノロジです。

関連する推奨事項: php チュートリアル

以上がPHPでトレイトを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。