2016-07-04 2 views
2

У меня есть аналогичные классы Laminat и линолеумапочему имя класса не найден, когда я прямо называют его laravel5

<?php namespace App\Http\Controllers\Parsing\Samara; class Laminat extends BaseSupply { 
public $manufacture = 'Без производителя'; 
public $class = 'null'; 
public $depth = 'null'; 
public $collection = 'Без коллекции'; } 

линолеума:

<?php namespace App\Http\Controllers\Parsing\Samara; class Linoleum extends BaseSupply { 
public $manufacture = 'Без производителя'; 
public $collection = 'Без коллекции'; 
public $width = 'null'; } 

и я пытаюсь использовать его как

$path = "App\Http\Controllers\Parsing\Samara\Linoleum"; 
$item = new $path(); 
dd($item); 

если я создаю экземпляр laminat его ответов с помощью dd

firstPic

если я создать экземпляр линолеума него ответы с дд

secondPic

Что я делаю не так с этим?

+0

Проверьте имя файла 'Linoleum.php' и каталог внутри' App \ Http \ Controllers \ Parsing \ Samara' ' –

+0

У меня есть все правильные файлы - Linoleum.php и Laminat.php –

ответ

1

Проблема заключалась в том, что эти классы не были в файле автозагрузки. Так я побежал theese comands

composer dump-autoload php artisan optimize

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

+1

вам не нужно запускать оптимизацию, пока в развитие. если у вас нет этого оптимизированного файла, автозагрузчик будет использовать автозагрузку psr4, для которой не требуется компоновщик для сбора новых файлов. когда вы его оптимизируете, создается классовая карта, которая потребует от компоновщика дампа для сбора любых новых файлов. – lagbox