如何避免在命名空间类中使用反斜杠和“use”来调用全局类?

时间:2014-03-09 12:47:56

标签: php namespaces

我有很多名称空间的类,我在其中对全局类进行了大量调用。

我有2个解决方案:

1-我在每个调用

的全局类中使用反斜杠“\”
namespace Admin;

class UserController extends \BaseController{
  [...]
  public function update($id){
    $user = new \User::find($id);
    $user->username = \Input::get('username');
    $user->password = \Hash::make(\Input::get('password'));
    return \Redirect::action('UserController@index');
  }
  [...]
}

2-我在每个命名空间类的开头用“use”声明了很多全局类的用法

namespace Admin;
use \BaseController;
use \User;
use \Input;
use \Hash;
use \Redirect;

class UserController extends BaseController{
  [...]
  public function update($id){
    $user = new User::find($id);
    $user->username = Input::get('username');
    $user->password = Hash::make(Input::get('password'));
    return Redirect::action('UserController@index');
  }
  [...]
}

在这两种情况下,我认为代码并不那么优雅。 有办法避免这种情况吗? 我想保留命名空间并调用全局类,而不在每个命名空间类中“使用”它们。

1 个答案:

答案 0 :(得分:6)

当你use你不必放斜线时,你可以:

use BaseController;
use User;
use Input;
use Hash;
use Redirect;

这意味着PHP会尝试从root(\)开始。

但如果您的类是命名空间,则无法避免use。这是告诉PHP这些文件不在你的同一名称空间中的方法。