Класс обертки Mysqli by Koenig (Допилить)

9.19K
.
(\/)____o_O____(\/)
Delphinum, два раза будет происходить инициализация класса
.
Koenig, ты про singleton?
.
(\/)____o_O____(\/)
Delphinum, ну да, если через абстрактный класс делать, будет два раза дергать инстанцию, ты об этом писал, по чему нельзя через абстракцию?
.
ну так ты попробуй реализовать через абстракцию и увидишь
.
(\/)____o_O____(\/)
Delphinum, пойду пробовать)
.
Koenig
(\/)____o_O____(\/)
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. Как быть в этом случае?
.
(\/)____o_O____(\/)
Delphinum, тогда да, интерфейс и трейт, вообще интересно сделали трэйты, они как бы множественное наследование реализуют (хотя миксинг)
.
Think different
# Delphinum (14.05.2015 / 19:34)
Koenig, Ага, а теперь представим, что класс A уже наследуется от класса B. Как быть в этом случае?
О, кажется я понял зачем нужны трейты гг
.
Koenig, верно. Трейты и интерфейсы это простой способ реализации множественного наследования. Вообще множественное наследование это сложная тема, которую гораздо проще понять используя трейты и интерфейсы. Другими словами это решение проблем множественного наследования.

Понял как и где нужно использовать трейты?
Всего: 362