Delphinum, два раза будет происходить инициализация класса
Koenig, ты про singleton?
Delphinum, ну да, если через абстрактный класс делать, будет два раза дергать инстанцию, ты об этом писал, по чему нельзя через абстракцию?
ну так ты попробуй реализовать через абстракцию и увидишь
Delphinum, пойду пробовать)
Delphinum,
abstract class Singleton {
protected static $instance = null;
public function __construct(){}
public function __clone(){}
public function __wakeup(){}
public final static function getInstance() {
if (null === static::$instance) {
static::$instance = new static();
}
return static::$instance;
}
}
class A extends Singleton {
public function test() {
echo '<pre>' . print_r($this, 1) . '</pre>';
}
}
$a = A::getInstance();
$a->test();
Koenig, Ага, а теперь представим, что класс A уже наследуется от класса B. Как быть в этом случае?
Delphinum, тогда да, интерфейс и трейт, вообще интересно сделали трэйты, они как бы множественное наследование реализуют (хотя миксинг)
# Delphinum (14.05.2015 / 19:34)
Koenig, Ага, а теперь представим, что класс A уже наследуется от класса B. Как быть в этом случае?
О, кажется я понял зачем нужны трейты гг
Koenig, верно. Трейты и интерфейсы это простой способ реализации множественного наследования. Вообще множественное наследование это сложная тема, которую гораздо проще понять используя трейты и интерфейсы. Другими словами это решение проблем множественного наследования.
Понял как и где нужно использовать трейты?