除非绝对必要,否则全局变量通常被认为是不好的做法,因此我正在寻找实现某些功能的替代方法。
我们目前正在用 PHP 开发一个 CMS 系统,并希望允许其他开发人员轻松地为 CMS 编写模块。我们定义了一个 CMS 类,如下所示:
class CMS
{
public $version;
public $sitename;
public $siteurl;
public $tbl_prefix;
function __construct()
{
}
function RegisterModule()
{
}
}
现在,我们想生成一个 的实例CMS
,并通过一个变量让开发人员(以及所有模块和核心文件)可以访问它$_cms
:由于我们不能在 PHP 中为对象使用常量变量,并且使用单例模式提供了笨拙的语法来访问实例(即CMS::GetInstance()->RegisterModule()
),有没有办法在不定义包含实例的全局变量的情况下实现我们想要的CMS
?
理想情况下,我们正在寻找类似以下语法的东西:
_cms->RegisterModule();
或$_cms->RegisterModule();
,首选前者。