这可能是一个简单的问题,但我想知道如何在不在每个文件上声明use语句的情况下自动加载有用的类。
<?php namespace App\Http\Controllers;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Input;
class HomeController extends Controller
{
public function index()
{
Input::get('query');
}
}
如果我删除使用Illuminate \ Support \ Facades \ Input; 行,我会收到一个类未找到错误,因为我正在使用Input类。
是否有办法在Laravel 4中自动加载有用的类,如输入,响应,视图。在app.php中,别名有什么意义?
答案 0 :(得分:2)
您可以使用以下两种方式导入输入类:
use Illuminate\Support\Facades\Input;
或
use Input;
然后您可以使用Input::get('query');
代码。这就是PHP名称空间的工作方式 - 您还可以查看How to use objects from other namespaces and how to import namespaces in PHP以获取有关它的更多详细信息。
如果您不使用use
语句导入课程,则可以使用\Input::get('query');
或\Illuminate\Support\Facades\Input::get('query');
。
别名允许您不使用完全限定的类,例如\Illuminate\Support\Facades\Input
但更短的\Input
形式。这就是为什么我展示了以上2个版本 - 较短的版本使用别名,较长的版本使用完整的类路径。我相信Laravel 4和Laravel 5中的机制相同。
答案 1 :(得分:1)
问题不在Laravel中,而是在PHP中。当你为一个类命名时,它假定该类中的所有内容都在同一个命名空间中,所以你必须告诉它,对于一个特定的类,你需要它来使用不同的命名空间。
您可以通过引用根命名空间来使用它们,如下所示:
class HomeController extends Controller
{
public function index()
{
\Input::get('query');
}
}