2016-06-09 65 views
1

今天,我才发现,原来在PHP中,你可以做:新对象使用对象的类的实例

$instance = new MyObject(); 

// Here $instance->getName() == 'First Instance' 
$instance->setName('First Instance'); 

// Here $newInstance->getName() == null 
$newInstance = new $instance(); 

显然$newInstance是一个有效的“为MyObject”的对象。

有人可以告诉我这种方式去涉及,如果它是或不是一个不能做?

Thx mates!

+0

你想达到什么目的?该代码的最后一行没有意义。我会期望它致命,但显然不是O_o –

+0

我正在使用一个函数,它采用参数中的对象,我不知道该类,使用函数来获取有关对象的更多细节,然后投射一个新的类实例使用所有的细节发送。 我创建了一个新类,因为此函数是一个项目的一部分,我使用API​​获取对象详细信息,每个从此API获取信息的函数都会返回一个'new MyObject($ apiResults)',所以我希望保持这种方式即使这个功能更通用... – LordWeedlle

回答

1

您需要使用所谓的“单例设计模式”来实现您的目标,如果我没有错,就是您想要使用相同的对象,每次创建类的对象时。

class Singleton { 
private static $instance; 

public function __construct() { 
     if (isset(self::$instance)) { 
      $object   = __CLASS__; 
      self::$instance = new $object; 
      return self::$instance; 
     } 
    } 
} 

这里,构造函数检查是否已经存在该类的实例,如果存在,则返回该对象本身。否则它会创建一个新的。