автозагрузка psr-4 не работает в Laravel 4

Я пытаюсь создать каталог для хранения пользовательских классов, поэтому я создаю каталог 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

Что я здесь не так делаю?

0

Решение

Вы не используете use правильно.

use ArgumentClub\Transformers; импортирует это пространство имен, но не импортирует класс, который вы хотите использовать.

Чтобы исправить это, вы можете продлить use Заявление (которое вы должны) должно быть так:

use ArgumentClub\Transformers\UserTransformer

Или вы можете добавить пространство имен Transformers туда, где вы создаете экземпляр своего класса UserTransformer.

$transformed = $this->fractal->collection($users, new Transformers\UserTransformer());

Если вы хотите создать экземпляр класса пространства имен без помещения полного пространства имен, вам нужно указать полный путь к классу в use заявление.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]