Я пытаюсь создать каталог для хранения пользовательских классов, поэтому я создаю каталог app/ArgumentClub/Transformers
и класс UserTransformer.php
в этой папке.
Я тогда автозагрузка с:
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"],
"psr-4": {
"ArgumentClub\\": "app/ArgumentClub"}
},
И беги composer dump-autoload
, И пространство имен вот так:
<?php namespace ArgumentClub\Transformers;
class UserTransformer {
Я вызываю этот класс в другом классе, как это:
<?php
use Sorskod\Larasponse\Larasponse;
use ArgumentClub\Transformers;
class UsersController extends \BaseController {
...
$transformed = $this->fractal->collection($users, new UserTransformer());
Но я получаю ошибку:
Class 'UserTransformer' not found
Что я здесь не так делаю?
Вы не используете use
правильно.
use ArgumentClub\Transformers;
импортирует это пространство имен, но не импортирует класс, который вы хотите использовать.
Чтобы исправить это, вы можете продлить use
Заявление (которое вы должны) должно быть так:
use ArgumentClub\Transformers\UserTransformer
Или вы можете добавить пространство имен Transformers туда, где вы создаете экземпляр своего класса UserTransformer.
$transformed = $this->fractal->collection($users, new Transformers\UserTransformer());
Если вы хотите создать экземпляр класса пространства имен без помещения полного пространства имен, вам нужно указать полный путь к классу в use
заявление.
Других решений пока нет …