ホームページ > バックエンド開発 > PHPの問題 > phpトレイトの使い方は何ですか?

phpトレイトの使い方は何ですか?

藏色散人
リリース: 2023-03-09 18:40:01
オリジナル
1889 人が閲覧しました

php trait は、PHP の単一継承制限に対する柔軟なコード再利用メカニズムを提供するコード再利用テクノロジです。その使用構文は、「trait ezcReflectionReturnInfo {function getReturnType() {/*1* /}...」のようなものです。 }"。

phpトレイトの使い方は何ですか?

この記事の動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

1. php の trait とは?

これはクラスとインターフェイスの両方のように見えますが、実際にはどちらでもありません。トレイトはクラスの部分的な実装と見なすことができ、1 つ以上の既存の PHP クラスに混合できます。関数: クラスが実行できることを示します。;モジュール実装を提供します。 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 を使用して特性を紹介します。

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

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 サイトの他の関連記事を参照してください。

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