Laravel фасад недоступен внутри пакета? - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь использовать фасад, который я создал, для работы с mongoDB, но я не могу заставить его работать внутри собственного пакета.

Мой пакет работает нормально, и я могуНазовите мой фасад без проблем за пределами моей посылки.

Я загружаю свою посылку с помощью композитора следующим образом:

"autoload": {
    "classmap": [
        "database/seeds",
        "database/factories"
    ],
    "psr-4": {
        "App\\": "app/",
        "Insight\\": "packages/test"
    }
},

Я следовал небольшому руководству по созданию фасада. Ссылка на учебник

Я переименовал фасад в mongoDatabase, который отлично работает в моих контроллерах (за пределами моего пакета).

  public function __construct(EmailRepository $emailRepository)
{
    $this->emailRepository = $emailRepository;
}

public function store()
{
    $this->emailRepository->store(['plain' => 'test']);
}

В моем хранилище я создалабстрактный класс, который фактически загружает фасад.

/**
 * AbstractRepository constructor.
 *
 * @param \mongoDatabase $mongoDatabase
 */
public function __construct(\mongoDatabase $mongoDatabase)
{
    $db = Config('services.mongo.database');

    $this->collection = $mongoDatabase::get()->selectCollection($db, $this->table);
}

Однако, вызывая emailRepository из моего пакета, я получу следующую ошибку:

Call to undefined method App\mongoDatabase\Facade::get()

Прямо сейчас я немного не уверен, еслиЯ могу добраться до фасада в тот момент, когда пытаюсь вызвать его внутри моей посылки?Загружается ли мой пакет перед фасадом, из-за чего он не знает о функции get фасада?Или я упускаю что-то еще, что мне нужно сделать, чтобы мой пакет мог загрузить фасад?

...