Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Узнать дочерние классы
 
 автор: jiraff   (25.10.2007 в 19:03)   письмо автору
 
 

Ну мне нужно организовать тн "модульную ОО-структуру", но я столкнулся с одной проблемой.Допустим, у меня есть клас BATYA1, BATYA2 и BATYA3.Число в имени класа различает возможности классов, наследующих эти классы.Так вот, как мне узнать все классы, наследующие, например, класс BATYA1 ?Я понятно выразился?

   
 
 автор: EXP   (25.10.2007 в 19:50)   письмо автору
 
   для: jiraff   (25.10.2007 в 19:03)
 

<?

class WidgetFactory
{
  var 
$oink 'moo';
}

class 
child extends WidgetFactory {
   var 
$oink2 'moo2'
    function 
child() 
    {

    }
}


$obj = new child();

# так
echo "I'm " get_parent_class($obj) , "'s son<br>\n";

# или так
if (is_a($obj'WidgetFactory')) {
  echo 
"yes, \$obj is still a WidgetFactory<br>\n";
}
if (
is_a($obj'child')) {
  echo 
"yes, \$obj is still a child<br>\n";
}

# ещё так

if (is_subclass_of$obj'WidgetFactory' )) echo 'yes, \$obj is still a WidgetFactory\n<br>';
?>

   
 
 автор: jiraff   (25.10.2007 в 20:27)   письмо автору
 
   для: EXP   (25.10.2007 в 19:50)
 

мм..Спасибо :-)

   
 
 автор: jiraff   (25.10.2007 в 20:45)   письмо автору
 
   для: jiraff   (25.10.2007 в 20:27)
 

Но это не совcем то... Я знаю только что есть класс Father, и соответственно не имею даже представления о обьектах наследующих его классов.Тоесть мне нужно наделать обьектов под каждый класс и проверить каждый на принадлежность is_subclass_of($obj, 'Father')...Но я думал есть какой-нибудь более простой способ для получения списка всех дочерних классов класса...

   
 
 автор: EXP   (25.10.2007 в 22:52)   письмо автору
 
   для: jiraff   (25.10.2007 в 20:45)
 

сам класс не содержит инфу какие классы его наследуют,
это можно сделать только внутри наследующих классов get_parent_class($this) , или получив их объекты.

В вашем случае проще сделать поиск строки
"class 'любое слово' extends Fazer"
по файлам со всеми классами

   
 
 автор: cheops   (26.10.2007 в 10:50)   письмо автору
 
   для: jiraff   (25.10.2007 в 19:03)
 

Список наследников ни одна функция не возвращает, но вы можете получить полный список классов при помощи функции get_declared_classes () и в цикле определить является ли каждый из классов наследником базового класса при помощи функции is_a().

   
 
 автор: jiraff   (26.10.2007 в 14:25)   письмо автору
 
   для: cheops   (26.10.2007 в 10:50)
 

Так is_a() вроде принимает обьект и имя класса, и если обьект является экземпляром класса, имя которого передано функции, то возвращает true.Тут is_subclass_of() нужен..

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования