Symfony2 中的特征错误
Trait error in Symfony2
我需要在 symfony2 中使用 Traits。扩展不同父级的不同存储库仍然使用一些通用方法。我创建了一个包含这些常用方法的特性。不幸的是,当我调用该操作时,Symfony2 抛出一条错误消息:
Parse Error: syntax error, unexpected 'Trait' (T_TRAIT), expecting identifier (T_STRING)
in src/AppBundle/Entity/Repository/CategoryRepository.php line 14
这是存储库之一
namespace AppBundle\Entity\Repository;
use Gedmo\Tree\Entity\Repository\NestedTreeRepository;
use AppBundle\Trait\HasDomainRepositoryTrait;
/**
* CategoryRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class CategoryRepository extends NestedTreeRepository
{
use HasDomainRepositoryTrait;
public function search($domain, $onlyActive, $searchString = null)
{
$builder = $this->createBaseQuery($domain, $onlyActive);
if ($searchString) {
$builder
->andWhere('e.name LIKE :searchString')
->setParameter('searchString', '%'.strtolower($searchString).'%')
;
}
return $builder;
}
}
这是特征:
namespace AppBundle\Trait;
trait HasDomainRepositoryTrait
{
public function createBaseQuery($domain, $onlyActive = false)
{
$builder = $this->createQueryBuilder('e');
if ($domain) {
$builder
->andWhere('e.domain = :domain')
->setParameter('domain', $domain)
;
}
if ($onlyActive) {
$qb->andWhere(sprintf('e.enabled = %s', $onlyActive));
}
return $builder;
}
}
我正在使用 PHP 5.6 和 Traits 工作(我在项目外进行了一些简单的测试 运行)。
我不明白怎么了。
您可能无法创建您的命名空间 "Trait"。尝试将命名空间更改为其他名称。
我需要在 symfony2 中使用 Traits。扩展不同父级的不同存储库仍然使用一些通用方法。我创建了一个包含这些常用方法的特性。不幸的是,当我调用该操作时,Symfony2 抛出一条错误消息:
Parse Error: syntax error, unexpected 'Trait' (T_TRAIT), expecting identifier (T_STRING)
in src/AppBundle/Entity/Repository/CategoryRepository.php line 14
这是存储库之一
namespace AppBundle\Entity\Repository;
use Gedmo\Tree\Entity\Repository\NestedTreeRepository;
use AppBundle\Trait\HasDomainRepositoryTrait;
/**
* CategoryRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class CategoryRepository extends NestedTreeRepository
{
use HasDomainRepositoryTrait;
public function search($domain, $onlyActive, $searchString = null)
{
$builder = $this->createBaseQuery($domain, $onlyActive);
if ($searchString) {
$builder
->andWhere('e.name LIKE :searchString')
->setParameter('searchString', '%'.strtolower($searchString).'%')
;
}
return $builder;
}
}
这是特征:
namespace AppBundle\Trait;
trait HasDomainRepositoryTrait
{
public function createBaseQuery($domain, $onlyActive = false)
{
$builder = $this->createQueryBuilder('e');
if ($domain) {
$builder
->andWhere('e.domain = :domain')
->setParameter('domain', $domain)
;
}
if ($onlyActive) {
$qb->andWhere(sprintf('e.enabled = %s', $onlyActive));
}
return $builder;
}
}
我正在使用 PHP 5.6 和 Traits 工作(我在项目外进行了一些简单的测试 运行)。 我不明白怎么了。
您可能无法创建您的命名空间 "Trait"。尝试将命名空间更改为其他名称。