我想做的是在一个控制器中使用不同的命名空间。我有一个这样的树形方案:
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/folder中的控制器调用一个模型。因此,我应该像这样添加名称空间:
use App'Modules'Facebook'Controllers'Facebook;
问题是,当我添加一个命名空间并同时使用App::()函数时,我得到以下错误:
Class 'App'Modules'Modulename'Controllers'App' not found
我认为它正在模块文件夹中查找App::()
函数。我该如何解决这个问题?
如果您在App'Modules'Facebook'Controllers
命名空间中使用App
,它将被解释为App'Modules'Facebook'Controllers'Facebook'App
类。
由于您不想使用以前的名称空间,因此在App
之前使用'
,如:
'App::()
或者将use语句放在类的顶部,如use App;
您可能正在创建一个不寻常的名称空间方案。似乎您对模块中的每个类都使用了不同的命名空间。您应该只在模块内命名代码,如下所示:
// Adding Onur to the namespace prevents any future namespace collisions.
<?php namespace Onur'Facebook;
创建名称空间后,您应该添加您想要使用的名称空间之外的所有类,如下所示。
use Eloquent, Input, Validate, Etc;
这可以防止您在每个类实例前面添加'
,从而使您的代码难以维护并容易出错。它还为您提供了当前类中使用的所有类的良好概述。
如果你说
use App'Modules'Facebook'Controllers'Facebook;
那么你应该使用Facebook
而不是App
…还是我没有正确理解你的问题?
如果你说
use App'Modules'Facebook'Controllers'Facebook as FacebookController;
你可以在你的文件
中使用FacebookController
如果你需要访问根应用程序,你需要使用前置'
来根它
'App::make()