Получить имя класса. Как?

  • Автор темы Powerhead13
  • Дата начала

Powerhead13

Guest
Получить имя класса. Как?

Существуют два класса

PHP:
class _General {

function _test()
{
   // Здесь нужно получить имя вызвавшего класса
}

}


class a extends _General{

function a()
{
   $this->_test();
}

}

Я говорю $a = new a и хочу в функции _test() узнать имя вызвавшего класса-потомка, то есть "a". Возможно ли такое?
 

tony2001

TeaM PHPClub
какую задачу ты решаешь таким образом?
выглядит очень странно, с учетом того, что [m]get_class[/m]($this); ты не нашел.
 

Powerhead13

Guest
tony2001 это мне и нужно было, спасибо =)
 

tony2001

TeaM PHPClub
Powerhead13
мне кажется, что тебе нужно просто в подчиненный класс добавить функцию _test со своей собственной имплементацией.
то, что родитель "знает" о детях - это не нормально IMO.
 

Powerhead13

Guest
tony2001 У меня ситуация такая - я создаю один класс с рядом стандартных функций и одна из них - чтение некоторых опций для данного класса, которые хранятся в какой-нибудь таблице опций. К примеру, класс-потомок а имеет опции таблица_в_бд, число_записей_на_странице и т. д. Класс b тоже имеет какие-то опции, все они хранятся в таблице config в виде 'a_table_name', 'a_records', 'b_table_name' ...

Теперь, при инициализации класса-потомка, я передаю ф-ции test() список опций table_name, records, а она, зная имя класса, читает эти опции.. да, сложновато получается =)

Но зато универсальный подход. Я могу так поступить не только с опциями, а ещё с какими-то настраиваемыми свойствами класса.. Хотя может я и не прав.
 

tony2001

TeaM PHPClub
насколько я понял из этого сумбурного изложения идеи, эти классы равнозначны и оба должны быть потомками одного общего класса, а не родителем и ребенком.
 

IntenT

SkyDiver
определи свойство
var $ClassName и переопределяй его в потомках
типа
PHP:
<?

class a {
 var $foo = "a";
 function get_foo(){
    echo $this->foo."<br>\n";
 }
}

class b extends a{
  var $foo = "b";
}

$c = &new a();
$c->get_foo();

$d = &new b();
$d->get_foo();

?>
 

tony2001

TeaM PHPClub
IntenT
ну, допустим, есть для этого специальная константа __CLASS__.
только, не кажется ли это тебе извратом?
 

Powerhead13

Guest
Я имел в виду, что классы a и b являются потомками одного класса, который и содержит все стандартные функции
 

tony2001

TeaM PHPClub
м-да. теперь я окончательно ничего не понимаю.
впрочем, твое дело.
 
Сверху