o-g-r
@o-g-r (yamada hanako)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

EC-CUBE TraitにConst値をセットしたらエラーが出力される

Q&A

Closed

解決したいこと

EC-CUBE TraitにConst値をセットしたらエラーが出力される

発生している問題・エラー

Compile Error: Traits cannot have constants

または、問題・エラーが起きている画像をここにドラッグアンドドロップ

該当するソースコード


namespace Customize\Entity;

use Doctrine\ORM\Mapping as ORM;
use Eccube\Annotation\EntityExtension;


/**
  * @EntityExtension("Eccube\Entity\ClassName")
 */
trait ClassNameTrait

{
    const DOWN = 0;
    const UP = 1;
    const ALL = 2;
}

自分で試したこと

ClassNameでは問題ないのですがtaritに書くとエラーがでます。この場合どうしたらよいでしょうか?

0

1Answer

Compile Error: Traits cannot have constants

traitにはconstを書いちゃダメと言われています。

    const DOWN = 0;
    const UP = 1;
    const ALL = 2;

このconstを外せばエラーは消えると思います。
trait内での const は比較的新しいものだったと思うので利用しているPHPが対応していないのではないでしょうか?

0Like

Comments

  1. @o-g-r

    Questioner

    回答ありがとうございます。const値をどこに書いたらよいでしょうか?

  2. const値をどこに書いたらよいでしょうか?

    どうしても const を使いたいのであれば traitを使用するクラス側です。
    そもそも、いまやろうとしていることは const をまとめることのようなので答えとしては「使えません」ですかね。

    trait内でのconst定義はPHP8.2以降で使用できます。
    https://www.php.net/manual/ja/migration82.new-features.php#migration82.new-features.core.constant-in-traits

Your answer might help someone💌