2015-04-05 3 views
2

Есть ли способ предотвратить использование «использования» для всего. В Laravel 4 я никогда не использовал «использование», и все просто сработало. Теперь я узнаю, что мне нужно включить все, даже «DB» use DB. Это очень расстраивает и занимает много времени, глядя на все это.Laravel 5 предотвращает «использование»

Мой вопрос: есть ли более простой способ включить все?

<?php 
namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Models\Customer; 
use DB; 

class HomeController extends Controller { 

} 
?> 

Благодаря

+0

Что вы подразумеваете под «трудоемким»? Какой редактор или IDE вы используете, которые не могут импортировать классы с именами? Во всяком случае, это не имеет никакого отношения к Ларавелю. Вот как работают пространства имен в PHP. – kajetons

+0

Это потому, что 'DB' находится в корневом пространстве имен, а ваши контроллеры находятся в' App \ Http \ Controllers'. – Hkan

+0

Я настоятельно рекомендую вам найти редактор или среду IDE, которая автоматически добавляет 'use'. Я почти никогда не касаюсь раздела импорта моих классов ... Лично я очень люблю PhpStorm, но там есть много инструментов, которые имеют эту функциональность. Может быть, даже тот, который вы используете прямо сейчас, и вы просто этого не знаете;) – lukasgeiter

ответ

2

Не на самом деле - это дивный новый Namespaced мир PHP 5.3+. Ваш файл класса выше жизни в App\Http\Controllers пространстве имен, что означает, когда вы печатаете что-то вроде

$object = new SomeClass; 

PHP Предположим, вы имеете в виду класс App\Http\Controllers\SomeClass.

Вы будете или, как вы жаловались, нужно использовать use, или вы должны будете использовать полный имя класса (с ведущим \ позволить PHP знать, чтобы начать с глобального пространства имен) всякий раз, когда вы хотите использовать класс

class HomeController extends Controller { 
    public function someFunction() 
    { 
     $result = \DB::query(...); 
     $customer = new \App\Models\Customer; 
     //etc... 
    } 
} 
0

Это вопрос старый, но я обнаружил, что вы можете сделать это на основе информации из учебника по Tejas Jasani: http://www.theappguruz.com/blog/upgrading-from-laravel-4-2-to-5-in-web

Вот основные шаги:

1 - Добавить каталог приложений/Http/Controllers в директиву classaap для «autoload» вашего файла composer.json.

"autoload": { 
    "classmap": [ 
     "database", 
     "app/Http/Controllers" 
    ], 

2 - Удалите пространство имен из абстрактного приложения/Http/Контроллеры/Controller.php базового класса.

3 - В приложении/Провайдеры/RouteServiceProvider.php файлов, установите свойство пространства имен обнулить

protected $namespace = null; 

4 - Run "композитор дамп-автозагрузку" из командной строки.

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