как получить имя статического класса-потомка

Larva

Новичок
как получить имя статического класса-потомка

Есть абстрактный статический класс, в нем надо получить имя класса-потомка, что-то вроде get_class(self), как это сделать(в php5)?
PHP:
abstract class A
{
	public static function GetClassName()
	{
		// Здесь надо вернуть имя класса-потомка, т.е "В"	
		
		echo get_class(self); // не работает
		echo __CLASS__;       // возвращает А
		echo get_class();     // возвращает А
	}
}

class B extends A
{
	
}
B::GetClassName();
спасибо
 

Beavis

Banned
Larva
родительский класс не должен ничего знать о своих потомках
 

Larva

Новичок
да, но в моем случае потомок сам о себе должен узнать.
для нестатических классов это работает так:
PHP:
class A
{
	public function GetClassName()
	{
		echo get_class($this);
	}
}

class B extends A
{
	
}

$b = new B();
$b->GetClassName(); // вернет "В"
А вот как сделать для статических?
 

WP

^_^
itprog
Старуха надвое сказала)

Через [m]debug_backtrace[/m] можно =)) Вопрос целесообразности.
 

itprog

Cruftsman
WP
прежде чем советовать попробуй, особенно в свежих версиях :)
 

WP

^_^
Larva
Зачем тебе это понадобилось?

-~{}~ 16.02.08 19:42:

itprog
Я ни в коем случае не советую, даже если бы это было можно нормальными средствами.
 

itprog

Cruftsman
WP
Тогда зачем даешь ложную информацию?

а места применения вполне нормальные есть: орм, синглетон
 

master_x

Pitavale XXI wieku
насколько я понимаю человеку нужен late static binding, который доступен только в последних версиях. в общем в гугл по словам. хотя в целом статический метод -- это метод класса, а не экземпляра класса. так что поведение вполне нормальное
 

Larva

Новичок
WP
debug_backtrace тоже выдает имя класса-родителя

itprog
синглтон подойдет, но лучше без него :)

master_x
да, именно это, late static binding
жаль что оно не поддерживается в ранних версиях

Придется в классе-потомке хранить имя класса в переменной, как сейчас и реализовано. Некрасиво, но ничего не поделаешь
 
Сверху