2013-10-11 3 views
0

У меня возникают проблемы с загрузкой классов в одном из моих пакетов Laravel 4. Я получаю общую ошибку «Class Not Found», которая возникает, когда composer.json не имеет правильного отображения пути пространства имен. Я попытался добавить все в файл composer.json, но ничего не работает, но не psr-0, ни classmap, ни files. Однако, если я пытаюсь использовать полный путь к классу при объявлении нового объекта:Пакет Laravel 4 не загружает правильный путь класса

$foo=new Myvendor\Mypackage\Domain\Models\Mymodel;

она работает достаточно хорошо. Тем не менее, я не хочу объявлять весь путь каждый раз, когда мне нужен объект. Тот факт, что класс с полным файловым файлом показывает, показывает, что я очень близок к решению.

Отредактировано: Некоторый код

Мой класс, который расположен на: src\Myvendor\Mypackage\Domain\Models\Complainant.php относительно корня пакета

<?php namespace Myvendor\Mypackage\Domain\Models; 

class Complainant { 
public $fname; 
public $lname; 
} 

Часть моего composer.json файла:

"autoload": { 
    "psr-0": { 
     "Myvendor\\Mypackage": "src/" 
    } 
}, 

Этот код делает не работает:

$var=new Complainant; 

Хотя следующие делают:

$c=new Myvendor\Mypackage\Domain\Models\Complainant; 
+0

Вы сделали композитор дамп после того, как вы обновили композитор.json? – Robbo

+0

Да, я использовал 'composer dump-autoload' каждый раз, когда меняю смену. Json – Ermir

+0

Возможно, вы неправильно используете пространства имен. Показать фактический код и фактические ошибки. Этот вопрос не очень полезен. – Robbo

ответ

2

Если вы делаете php artisan dump-autoload, вы можете увидеть все классы отображаются в файле vendor/composer/autoload_classmap.php с их правильным пространством имен. Найдите там свой класс и используйте правильное пространство имен.

Смежные вопросы