我正在尝试重写一个OO PHP站点(松散地遵循MVC结构),因此它使用名称空间 - 并希望遵循PSR-0。
在当前站点中,我有一个类(称为APP),它充满了静态方法,我在整个地方调用它来处理诸如获取配置数据之类的事情; APP::get_config('key')
。
显然,使用命名空间,我需要调用\TheNameSpace\App::get_config('key')
。我经常使用这个类,所以我想避免每次使用它时都必须为命名空间添加前缀。我从其他类中调用其中的方法,这些类通常位于子命名空间之下 - 因此更改文件顶部的命名空间将无法正常工作。
所以,我想我的问题是,有一个'全局'类的最简单方法是什么,我可以在任何地方调用方法,而不必每次都使用命名空间前缀?
答案 0 :(得分:0)
在您的脚本顶部添加
use TheNameSpace\App as MyApp
例如,。然后你可以像
一样使用它app = new MyApp();
在你的脚本中。当然你不需要在这里使用别名。刚
use TheNameSpace\App
app = new App();
也会奏效。
正在实施这一项的全球类是糟糕的风格,你不应该这样做:
class MyApp extends TheNameSpace\App { }
....
myApp = new MyApp();
答案 1 :(得分:0)
namespace Foo;
use Bar;
然后您不必执行\Bar\fn
所以在你的情况下:
namspace Foo;
use TheNameSpace\App;
App::get_config('blah')
答案 2 :(得分:0)
阅读php手册中有关使用/别名命名空间的部分。
http://www.php.net/manual/en/language.namespaces.importing.php
您可以使用“use”排除命名空间。您可以随意命名。
use TheNamespace\App as App //You can name it anything here
App:config('key');