PHP PSR-0静态类

时间:2013-02-20 15:52:55

标签: php namespaces spl-autoload-register psr-0

我正在尝试重写一个OO PHP站点(松散地遵循MVC结构),因此它使用名称空间 - 并希望遵循PSR-0。

在当前站点中,我有一个类(称为APP),它充满了静态方法,我在整个地方调用它来处理诸如获取配置数据之类的事情; APP::get_config('key')

显然,使用命名空间,我需要调用\TheNameSpace\App::get_config('key')。我经常使用这个类,所以我想避免每次使用它时都必须为命名空间添加前缀。我从其他类中调用其中的方法,这些类通常位于子命名空间之下 - 因此更改文件顶部的命名空间将无法正常工作。

所以,我想我的问题是,有一个'全局'类的最简单方法是什么,我可以在任何地方调用方法,而不必每次都使用命名空间前缀?

3 个答案:

答案 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');