注册表模式与$ GLOBALS

时间:2013-08-30 11:44:59

标签: php design-patterns

我正在努力寻找一种为我的框架存储通用共享对象的良好实践。以前,我使用$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'];

1 个答案:

答案 0 :(得分:1)

我不确定注册管理机构的目标是什么,它看起来像一个美化的全球。

你应该研究的是依赖注入。您的代码不会立即受益,但是当您想要测试代码时,它确实很有用。如果您正在使用全局变量,则无法对代码进行单元测试,因为您无法模拟任何内容。

相关问题