2015-05-22 5 views
3

У меня есть пользовательский класс, который я добавил в Classes, invoice.php в папке Classes (\App\Classes).Laravel 5 Class not Found, используя пространство имен

При использовании функции контроллера я не могу выполнить статическую функцию, поскольку класс не найден. У меня есть пространство имен и используется как любые другие классы, похожие на Helpers.php.

Класс:

<?php namespace App\Classes; 

class invoice { 
// 
} 
?> 

-регулятора:

<?php namespace App\Http\Controllers; 

use App\Classes\invoice; 

class CustomerController extends Controller { 
// 
} 
?> 

Ошибка:

FatalErrorException in CustomerController.php line 284: 
Class 'App\Http\Controllers\invoice' not found 

Я застрял здесь в течение двух часов, и я не понимаю, что я делать неправильно. Composer использует psr-4, а файл Helpers.php отлично работает, но мой пользовательский файл классов не работает.

Благодаря

+0

«i» в счете-фактуре строчной буквы на вашем названии класса. Должно быть заглавное. – prograhammer

ответ

3

Чтобы следовать PSR-4 вам нужно иметь ваши имена классов начальной шапки. «Я» должен быть капитализированы здесь:

<?php namespace App\Classes; 

class Invoice { 
    // 
} 

исправить Также ваш use а. Затем, когда в вашем контроллере используется Invoice, он будет выбирать правильное пространство имен, которое будет использоваться для разрешения этого класса. Что происходит в настоящее время, так это то, что он не находит соответствующую ссылку в вашем разделе use, поэтому он предполагает, что он находится в том же пространстве имен класса контроллера, который его вызывает.

+0

Я вижу свою ошибку, и это решило мою проблему, спасибо. – jason

+0

У меня подобная проблема, но мое имя класса находится в верхнем верблюжьем корпусе. У меня есть класс 'InvoiceGenerator класса 'в папке' app/Classes/InvoiceGenerator'. И в моем контроллере я использую 'use App \ Classes \ InvoiceGenerator \ InvoiceGenerator;' Любая идея? –