ホームページ  >  記事  >  バックエンド開発  >  PHP の特性の詳細な分析

PHP の特性の詳細な分析

王林
王林転載
2019-08-20 16:59:242953ブラウズ

PHP5.4.0 以降、PHP は trait と呼ばれるコード再利用メソッドを実装しました。

ご存知のとおり、PHP には単一継承があり、トレイトとは PHP と同様に単一継承言語用に用意されたコード再利用の仕組みです。トレイトは、単一継承言語の制限を軽減し、開発者が異なる階層内の独立したクラスでメソッドを自由に再利用できるように設計されています。特性とクラス構成のセマンティクスは、複雑さを軽減し、従来の多重継承の問題を回避する方法を定義します。

traitclass に似ていますが、きめ細かく一貫した方法で機能を組み合わせるだけです。トレイト自体を通じてインスタンス化することはできません。従来の継承に水平機能の組み合わせが追加されています。つまり、アプリケーション内の複数のクラス間の継承が必要ありません。

推奨される PHP ビデオ チュートリアル: https://www.php.cn/course/list/29/type/2.html

1. シンプル例

最初に、特性を導入する例を示します。これはクラス定義に似ていますが、キーワード特性定義を使用します。クラス内で組み合わせを使用します。

<?php
trait T{
    public function t1(){
        return &#39;t1&#39;;
    }
    public function t2(){
        return &#39;t2&#39;;
    }
}
class Demo{
    use T;
    public function test(){
        return &#39;test&#39;;
    }多个
}
$demo = new Demo;
echo $demo->t1(),&#39;</br>&#39;;
echo $demo->test();

出力結果:

t1

test

2. 複数の特性の競合解決

#複数の特性が使用されているがメソッド名が同じ場合、競合が発生します。使用する特性メソッドを手動で指定し、これを実現するには

insteadof キーワードを使用する必要があります。

<?php
trait T{
    public function t1(){
        return &#39;t1&#39;;
    }
 
 
    public function t2(){
        return &#39;t2&#39;;
    }
}
 
 
trait T2{
    public function t1(){
        return &#39;t3&#39;;
    }
}
 
 
class Demo{
    use T,T2{
        //使用T的m1方法
        T::t1 insteadof T2;
    }
    public function test(){
        return &#39;test&#39;;
    }
}
 
 
$demo = new Demo;
echo $demo->t1(),&#39;</br>&#39;;
echo $demo->test();

出力結果:

t1

test

競合が発生した場合は、 use を使用してメソッド エイリアスを定義し、競合を解決することもできます。例は次のとおりです:

<?php
trait T{
    public function t1(){
        return &#39;t1&#39;;
    }
 
 
    public function t2(){
        return &#39;t2&#39;;
    }
}
 
 
trait T2{
    public function t1(){
        return &#39;t3&#39;;
    }
}
 
 
class Demo{
    use T,T2{
        //使用T的m1方法
        T::t1 insteadof T2;
        T2::t1 as new_t1;
    }
    public function test(){
        return &#39;test&#39;;
    }
}
 
 
$demo = new Demo;
echo $demo->t1(),&#39;</br>&#39;;
echo $demo->new_t1(),&#39;</br>&#39;;
echo $demo->test();

出力結果:

t1

#t3

test

3。アクセス許可の変更

use キーワードを使用してメソッドのアクセス許可を変更することもできます。

<?php
trait T{
    public function t1(){
        return &#39;t1&#39;;
    }
 
 
    public function t2(){
        return &#39;t2&#39;;
    }
}
 
 
class Demo{
    use T{
        t2 as protected;
    }
    public function test(){
        return &#39;test&#39;;
    }
}
 
 
$demo = new Demo;
echo $demo->t1(),&#39;</br>&#39;;
echo $demo->t2(),&#39;</br>&#39;;
echo $demo->test();

出力結果:

PHP の特性の詳細な分析

上記の知識は、よく使われるいくつかの機能を紹介しています。詳細については、公式マニュアルを参照してください:

https://www.php.net/manual/zh/ language.oop5.traits.php

PHP 関連のその他の質問については、PHP 中国語 Web サイトを参照してください。

https://www.php.cn/

ありがとうございます!

以上がPHP の特性の詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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