0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHP Trait (トレイト) について

Last updated at Posted at 2024-04-20

Trait (トレイト)

  • トレイトの目的 : PHP では、複数のクラスで同じメソッドを共有するためにトレイトが使用されます。
    これは、PHP が単一継承しかサポートしていないためめ、複数のクラスで同じメソッドを再利用するための解決策でもあります。

  • トレイトの制限 : トレイトはインスタンス化できません。つまり、トレイト自体はオブジェクトを作成することはできません。
    また、トレイトはクラスのように継承することもできません。

  • トレイトの優先順位 : クラス内で同じ名前のメソッドが存在する場合、クラスのメソッドが優先されます。これは、クラスがトレイトから継承したメソッドを上書き(override)することができるためです。

  • トレイトの衝突 : 2つのトレイトが同じ名前のメソッドを持っていて、それらのトレイトが同じクラスで使用される場合、PHPはエラーをスローします。
    これを解決するためには、insteadof キーワードを使用して、どのトレイトのメソッドを使用するかを明示的に指定する必要があります。

  • トレイトを持ってくるには use キーワードを使う。

Trait (トレイト) 実装例

sample.php
<?php

trait ProductTrait
{
    public function getProduct()
    {
        echo 'プロダクト';
    }
}

trait NewsTrait
{
    public function getNews()
    {
        echo 'ニュース';
    }
}

class Product
{
    use ProductTrait;
    use NewsTrait;

    public function getInformation()
    {
        echo 'クラスです';
    }

    // overrideも可能
    public function getNews()
    {
        echo 'クラスのニュースです';
    }
}

$product = new Product(); // インスタンス化

$product->getInformation();
echo '<br>';
$product->getProduct();
echo '<br>';
$product->getNews();
echo '<br>';
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?