0

我正在尝试找到一种为我的框架存储常用共享对象的好习惯。以前,我$GLOBALS用于访问那些共享对象。但是,我在互联网上发现很多文章说使用$GLOBALS是一种不好的做法,并建议使用注册表模式。

但是,我很难看出 Registry Pattern 是如何比$GLOBALS. 例如:

<?php
   $config = new Config();
   $config->autoAppPath(__DIR__);
   $config->option = ... // some value;
   $config->option2 = ... // some value;

   $db = new Database();

   Registry::set('config', $config);
   Registry::set('db', $db);
?>

我想知道使用 Registry 访问比使用 GLOBALS 更好,因为它有更好的命名空间?

Registry::get('config');
$GLOBALS['config'];
4

1 回答 1

1

我不确定注册表在这里要修复什么,它看起来像是一个美化的全局。

您应该研究的是依赖注入。您的代码不会立即获得好处,但是当您想要测试代码时,它确实会大放异彩。如果您使用全局变量,则无法对代码进行单元测试,因为您无法模拟任何内容。

于 2013-08-30T11:47:44.197 回答