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

18.16K
.
(\/)____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