kode
never knows best
Как получить имя дочернего класса в статичном методе родительского
Вопрос такой, как узнать имя класса "сына" в обьекте родителя. необходимо в реализации шаблона синглтон. Те код-тест
Вариант с извратов ввиде разбора бектрейса не пойдёт.
PS. Сразу говорю, вариант с перегрузкой метода в дочернем классе c передачей названия класса в параметре тоже не катит (сейчас так сделано, но блин это против моей религии)
PSS. Кто предолжит get_class($this) - найти ближайшую стенку и убитсо.
PSSS. Вариант "никак" ожидаем и приемлем, всё равно парочка решений есть (в основном на передаче имени класса параметром, просто фактически такие методы - костыли)
Вопрос такой, как узнать имя класса "сына" в обьекте родителя. необходимо в реализации шаблона синглтон. Те код-тест
PHP:
class base_module {
protected static $instance;
static function getInstance(){
if(!isset(self::$instance)){
$class = __CLASS__; // <------------------- см. сюда
self::$instance = new $class;
}
return self::$instance;
}
public function test(){
return get_class($this);
}
}
class simple_module extends base_module {
function __construct(){
//some stuff
}
}
$module = simple_module::getInstance();
if($module->test() == "simple_module"){
echo "Test success";
}else{
echo "Test failed!";
}
PS. Сразу говорю, вариант с перегрузкой метода в дочернем классе c передачей названия класса в параметре тоже не катит (сейчас так сделано, но блин это против моей религии)
PSS. Кто предолжит get_class($this) - найти ближайшую стенку и убитсо.
PSSS. Вариант "никак" ожидаем и приемлем, всё равно парочка решений есть (в основном на передаче имени класса параметром, просто фактически такие методы - костыли)