【发布时间】:2019-02-07 02:47:15
【问题描述】:
我想知道将实例化对象转移到另一个类以供本地使用的最佳方法是什么。我也很好奇这是否会对内存使用产生影响。
我想了一下,主要有两种方式:
1.) 通过引用 $GLOBALS 传输实例对象:
class UserLogHandler {
public function __construct() {
$this->DB = $GLOBALS['DB'];
$this->Security = $GLOBALS['Security'];
}
public function doSomeWork() {
$this->DB->someMethod;
}
}
或 2.) 通过交接转移:
class UserLogHandler($DB,$Security) {
public function doSomeWork() {
$DB->someMethod;
}
}
在我看来,选项 2 可能更适合复杂的环境,尽管我发现选项 1 更有吸引力。无论如何,我更喜欢技术和/或逻辑解释为什么使用一个选项而不是另一个选项。如果还有其他更好的选择,请告诉我。
提前致谢并致以最良好的祝愿, 托马斯
【问题讨论】:
-
选项 2,每次。如果您需要详细信息,请阅读依赖注入,但它会在各个级别上显着改进您的代码。如果你曾经写过 globals 这个词,那你就错了。
-
亲爱的 iainn,谢谢。将使用适当的注射代替!
标签: php object transfer globals