ひろこま Hack Log

プログラミングや機械学習などの知識を記録・共有します

EC-CUBE4のEntity拡張時にエラー [Semantical Error] The annotation *** does not exist, or could not be auto-loaded.

f:id:twx:20200103202217p:plain
EC-CUBE 4.0.1

以下のようなエラーが発生

以下のEC-CUBE4.0開発者ドキュメントに従ってEntityを拡張しようとしたところ、エラーが発生しました。 https://doc4.ec-cube.net/customize_entity

.This resource fork intentionally left blank   ��tuseddate#PSܾ�F
In AnnotationException.php line 54:


  [Semantical Error] The annotation "@Doctrine\ORM\Mapping" in property Eccube\Entity\ProductClass::$weight does not exist, or could not be auto-loaded.

原因は主に2つ

01. 余計なファイルが紛れ込んでいる

/app/Customize/Entity/ に余計なファイルが紛れ込んでいる可能性があります。たとえば、このディレクトリ内のファイルをMacOSのエディタ等で編集していると、ファイル名が._ で始まる隠しファイルが知らずしらずのうちに生成されていることがあります。これを除去する必要があります。

# 全てのファイルを列挙。
$ ls -la
合計 16
drwxrwxr-x 2 komah komah 4096  1月 12 21:27 .
drwxrwxr-x 4 komah komah 4096 11月 29  2018 ..
-rwxr--r-- 1 komah komah 4096  1月 13 09:50 ._ProductClassTrait.php # <= 余計なファイル
-rw-rw-r-- 1 komah komah    0 11月 29  2018 .gitkeep
-rwxrw-r-- 1 komah komah  321  1月 13 09:54 ProductClassTrait.php


# 以下のコマンドで除去。
rm ._ProductClassTrait.php

02. /\ を間違えている

スラッシュとバックスラッシュを間違えるという、PHPを始めたての人がよくやるミスです。

誤ってスラッシュを用いてしまっている例↓

<?php

namespace Customize\Entity;

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

/**
  !!! ここで↓スラッシュを使うのは誤り !!!
  * @EntityExtension("Eccube/Entity/Product")
 */
trait ProductTrait
{
    /**
  !!! ここで↓スラッシュを使うのは誤り !!!
     * @ORM/Column(type="string", nullable=true)
     */
    public $maker_name;
}

正しい例↓ バックスラッシュを使おう

<?php

namespace Customize\Entity;

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

/**
  * @EntityExtension("Eccube\Entity\Product")
 */
trait ProductTrait
{
    /**
     * @ORM\Column(type="string", nullable=true)
     */
    public $maker_name;
}


以上、EC-CUBE4のEntity拡張時のエラー [Semantical Error] The annotation *** does not exist, or could not be auto-loaded.に関する記事でした!

良い記事だと思っていただいた方は、以下の「★+」ボタンのクリック、SNSでのシェア、「読者になる」ボタンのクリック、Twitterのフォローをお願いします!

Koma Hirokazu 's Hacklog ―― Copyright © 2018 Koma Hirokazu