提问人:Onur 提问时间:5/7/2014 最后编辑:LaurenceOnur 更新时间:5/13/2014 访问量:5960
如何在 Laravel 4.1 的控制器中使用不同的命名空间
how to use different namespaces in a controller in laravel 4.1
问:
我想做的是在控制器中使用不同的命名空间。我有一个这样的树方案:
app/
app/controllers/
app/modules/
app/modules/modulename/
app/modules/modulename/controllers/
app/modules/modulename/controllers/modulecontroller.php
app/modules/modulename/models/
app/modules/modulename/models/modulemodel.php
我想做的是从app/controllers/文件夹中的控制器调用模型。因此,我应该添加命名空间,如下所示:
use App\Modules\Facebook\Controllers\Facebook;
问题是,当我添加命名空间并同时使用 App::() 函数时,出现以下错误:
Class 'App\Modules\Modulename\Controllers\App' not found
我认为它正在模块文件夹中查找功能。我该如何解决这个问题?App::()
答:
1赞
Luke
5/7/2014
#1
如果你说
use App\Modules\Facebook\Controllers\Facebook;
那么你应该使用而不是......还是我没有正确理解你的问题?Facebook
App
如果你说
use App\Modules\Facebook\Controllers\Facebook as FacebookController;
您可以在文件中使用FacebookController
如果您需要访问根应用程序,则需要使用前导对其进行根操作\
\App::make()
评论
0赞
Onur
5/7/2014
好的,我可以使用它。但主要问题是我想在同一个控制器中同时使用 laravel 的 App::() 功能。那次 App::make() 函数给了我这样的错误:找不到类“App\Modules\Facebook\Controllers\App”
1赞
sidneydobber
5/7/2014
#2
您可能正在创建一个不寻常的 namspace 方案。您似乎以不同的方式对模块中的每个类进行命名空间。您应该仅在模块中命名代码,如下所示:
// Adding Onur to the namespace prevents any future namespace collisions.
<?php namespace Onur\Facebook;
创建命名空间后,应添加要使用的名称空间之外的所有类,如下所示。
use Eloquent, Input, Validate, Etc;
这样可以防止在每个类实例前面添加 a,从而使代码难以维护且容易出错。它还为您提供了当前类中使用的所有类的良好概述。\
3赞
Simon Wicki
5/7/2014
#3
如果在命名空间内使用,它将被解释为类。App
App\Modules\Facebook\Controllers
App\Modules\Facebook\Controllers\Facebook\App
由于您不想拥有以前的命名空间,因此请使用 before,例如:\
App
\App::()
或者把 use 语句放在类的顶部,比如use App;
评论