2016-06-09 5 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, возвращает «новый MyObject ($ apiResults)», поэтому я хочу продолжать этот путь даже для этой функции, которая является более общей ... – LordWeedlle

ответ

1

Для достижения своей цели вам нужно использовать так называемый шаблон дизайна Singleton, который, если я не ошибаюсь, заключается в том, что вы хотите использовать один и тот же объект каждый раз, когда создается объект класса.

class Singleton { 
private static $instance; 

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

Здесь конструктор проверяет, есть ли уже экземпляр класса, если он есть, он возвращает этот объект сам. Иначе он создает новый.

Смежные вопросы