[英]PHP OOP - getting instance of object into another class
我想获得一个现有对象的实例。 如何在不将对象作为参数传递的情况下执行此操作? 这就是我现在正在做的事情:
class clas1 {
public $myArray;
public function setArray($a){
$this->myArray = $a;
}
}
class clas2 {
public $test;
function __construct($obj) {
$this->test = $obj;
}
}
$c = new clas1;
$c->setArray(array('firstname'=>'Fred'));
$c2 = new clas2($c);
var_dump($c2);
var_dump的输出是:
object(clas2)[2]
public 'test' =>
object(clas1)[1]
public 'myArray' =>
array
'firstname' => string 'Fred' (length=4)
我想我可以将每个对象作为父对象的属性,但是还有其他建议吗?
通过调用静态方法(如单例)来拉取对象是一种不好的做法(甚至是反模式)。 单例和静态类对于新手来说是自然的,因为它们的工作方式与我们在程序范例中学到的方式相同,但你应该避免它们(只有在没有状态时才使用静态类)
您应该完全将对象作为参数传递,以避免引入隐式依赖项,并执行良好的OOP。
阅读有关依赖注入的信息 。
如果对象创建变得复杂或烦人,您始终可以使用依赖注入容器
你应该使用sigleton模式:
class class1
{
private static $_instance;
public static function getInstance()
{
if (is_null(self::$_instance)) {
self::$_instance = new self;
}
return self::$_instance;
}
private function __construct() {}
private function __clone() {}
}
class class2 {
public function __construct()
{
$obj = class1::getInstance();
}
}
$a = class1::getInstance();
$b = new class2();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.