我正在尝试重写一个OO站点(它松散地遵循MVC结构),以便它使用名称空间-并且希望遵循PSR-0。
在当前的站点中,我有一个类(名为APP),它充满了我到处调用的静态方法,以处理诸如获取配置数据之类的事情,例如;APP::get_config('key')。
显然,使用名称空间时,我需要调用\TheNameSpace\App::get_config('key')。我经常使用这个类,所以我想避免每次使用它时都必须在名称空间前加上前缀。我确实从其他类中调用了其中的方法,这些类通常位于一个子命名空间下-因此,更改文件顶部的命名空间实际上不会起作用。
所以,我想我的问题是,拥有一个“全局”类的最简单方法是什么,我可以在任何地方调用这些方法,而不必每次都以名称空间为前缀?
发布于 2013-02-20 23:56:27
在您的脚本顶部添加
use TheNameSpace\App as MyApp例如。然后,您可以像这样使用它
app = new MyApp();在你的脚本中。当然,您不需要在这里使用别名。只是
use TheNameSpace\App
app = new App();也行得通。
实现这个的全局类是不好的风格,你不应该这样做:
class MyApp extends TheNameSpace\App { }
....
myApp = new MyApp();发布于 2013-02-20 23:56:48
namespace Foo;
use Bar;这样你就不用做\Bar\fn了
所以在你的例子中:
namspace Foo;
use TheNameSpace\App;
App::get_config('blah')发布于 2013-02-20 23:57:23
请阅读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');https://stackoverflow.com/questions/14984194
复制相似问题