Теперь множественная наследование ;)))
Блин, на сколько удобно то…
<?php
/**
* @author AlexanderC
*/
trait Singleton {
/**
* method called after parent object
* instantiation with primary input
* parameters provided
*/
protected function onAfterConstruct(){ /* extend it */ }
/**
* Assure no constructor
*
* @return object
*/
final private function __construct(){ /* do nothing here, extend onAfterConstruct() instead */ }
/**
* get class instance
*
* @return object
*/
final public static function getInstance(){
static $self;
if(!($self instanceof self)){
$self = new self;
call_user_func_array([$self, "onAfterConstruct"], func_get_args());
}
return $self;
}
}
// а класс прописываем удобно и просто…
class Any {
use Singleton;
}
Теперь любой класс который будет юзать данный треит будет синглетоном… а все параметры которые передаются первый раз в ::getInstance() будут при желании переданны в метод onAfterConstruct()
А самое классное в том что можно реализовать многое, допустим:
- Cache politics
- Event driven programming
итдитп.
Блин, i love PHP
Ксттаи ещё очень понравились следующие фишки:
[] VS array()
for($key in []) VS foreach(array() as $k => $v)