如何在一个控制器中使用不同的命名空间


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/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()