【发布时间】:2009-08-30 09:55:30
【问题描述】:
您好,我有一些类的集合,其中一些应该是全局可访问的。
我在 Zend_Registry 中发现了类似的东西,但是阅读它的代码我无法理解对静态函数的调用如何返回一个类的初始化实例...
我需要做一些类似的事情:
<?php
//index.php
$obj = new myUsefulObject();
$obj->loadCfg("myFile.xml");
$req = new HTTPRequest();
$req->filter("blablabla");
myappp::registerClass("object",$obj);
myappp::registerClass("request",$req);
$c = new Controller();
$c->execute();
?>
在这里我已经过滤了 Request 对象,我希望控制器能够访问已经过滤的请求。
<?php
class Controller
{
function __construct()
{
$this->request = Application::getResource("request");//This must be the filtered var =(
}
}
?>
我不知道如何实现那个Application::getResource(),我唯一知道的是它必须是一个静态方法,因为它不能与特定的实例相关。
【问题讨论】:
-
对不起,我不明白这个问题。你想用 Application::getResource() 做什么?你的代码有什么问题?
-
您应该尽可能避免使用全局变量。一个更好的选择是依赖注入/控制反转——你应该查一下。
-
我认为在 PHP 中避免使用全局变量是没有意义的。脚本往往非常小,以至于实现/执行此类模式的开销将花费您更多的开发人员时间/服务器时间。
标签: php oop global-variables