我正在努力寻找一种为我的框架存储通用共享对象的良好实践。以前,我使用$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'];
答案 0 :(得分:1)
我不确定注册管理机构的目标是什么,它看起来像一个美化的全球。
你应该研究的是依赖注入。您的代码不会立即受益,但是当您想要测试代码时,它确实很有用。如果您正在使用全局变量,则无法对代码进行单元测试,因为您无法模拟任何内容。