Laravel无法声明类,因为该名称已被使用

时间:2019-08-31 18:12:00

标签: php laravel class

this博客文章之后,我在Laravel中成功实现了基于类的工厂。

最初,我将ModelFactory放在app/some/folder中。一切都很好。但是我想在database/factories/classbased中使用它们,然后开始出现此错误;

PHP Fatal error:  Cannot declare class Factories\ClassBased\GroupFactory, because the name is already in use in ..root/project/database/factories/classbased/GroupFactory.php on line 18

对于这个错误,我对SOF以及其他地方都有很好的了解,但是所有答案似乎都是出于不同的原因/我无法根据自己的情况调换答案。

我尝试将我的类重命名为完全唯一的名称(因为ModelFactory已经是Laravel用于其标准工厂的命名格式),但是我仍然遇到相同的错误。我的自定义类似乎正在重新声明,我不知道为什么。

这是我自定义课程的内容:

<?php
// database/factories/classbased/GroupFactory.php

namespace Factories\ClassBased;


class GroupFactory
{

    // stuff //
    public function facilitatedBy(TeamMember $teamMember)
    {
        $this->facilitator = $teamMember;

        return $this;
    }

这就是我的测试内容:


<?php

namespace Tests\Feature;


use XYZ;
use Facades\Factories\ClassBased\GroupFactory;


class ClassBasedGroupFactoryTest extends TestCase
{
    use RefreshDatabase, SetUpRolesAndPermissions, WithFaker;

    public function setUp() : void
    {
        parent::setUp();

        $this->setUpRolesAndPermissions();
    }

    /** @test */
    public function it_can_set_the_facilitator()
    {
        $facilitator = $this->createTeamMemberWithRoleOf('facilitator');

        $group = GroupFactory::facilitatedBy($facilitator)->create();

        $this->assertEquals($facilitator->id, $group->facilitator->id);
    }

    /** @test */
    public function another_test()
    {
        $x = 'y';

        $group = GroupFactory::someThing($x)->create();

        $this->assertEquals($x, $group->theThing);
    }

我的composer.json中有这个:

    "autoload": {
        "files": [
            // files
        ],
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "database/seeds",
            "database/factories",
            "database/factories/classbased"
        ]
    },

我希望能够无问题地使用该类,就像在App命名空间中使用该类一样。但是当我将其重构时,错误就开始了。

该如何解决?

0 个答案:

没有答案