首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP PSR-0静态类

PHP PSR-0静态类
EN

Stack Overflow用户
提问于 2013-02-20 23:52:55
回答 3查看 520关注 0票数 0

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

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

显然,使用名称空间时,我需要调用\TheNameSpace\App::get_config('key')。我经常使用这个类,所以我想避免每次使用它时都必须在名称空间前加上前缀。我确实从其他类中调用了其中的方法,这些类通常位于一个子命名空间下-因此,更改文件顶部的命名空间实际上不会起作用。

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

EN

回答 3

Stack Overflow用户

发布于 2013-02-20 23:56:27

在您的脚本顶部添加

代码语言:javascript
复制
use TheNameSpace\App as MyApp

例如。然后,您可以像这样使用它

代码语言:javascript
复制
app = new MyApp();

在你的脚本中。当然,您不需要在这里使用别名。只是

代码语言:javascript
复制
use TheNameSpace\App
app = new App();

也行得通。

实现这个的全局类是不好的风格,你不应该这样做:

代码语言:javascript
复制
class MyApp extends TheNameSpace\App { }

....
myApp = new MyApp();
票数 0
EN

Stack Overflow用户

发布于 2013-02-20 23:56:48

代码语言:javascript
复制
namespace Foo;
use Bar;

这样你就不用做\Bar\fn

所以在你的例子中:

代码语言:javascript
复制
namspace Foo;
use TheNameSpace\App;

App::get_config('blah')
票数 0
EN

Stack Overflow用户

发布于 2013-02-20 23:57:23

请阅读php手册中关于使用/别名命名空间的部分。

http://www.php.net/manual/en/language.namespaces.importing.php

您可以使用use排除命名空间。你可以给它起任何你想要的名字。

代码语言:javascript
复制
use TheNamespace\App as App //You can name it anything here
App:config('key');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14984194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档