|
|
|
| Ну мне нужно организовать тн "модульную ОО-структуру", но я столкнулся с одной проблемой.Допустим, у меня есть клас BATYA1, BATYA2 и BATYA3.Число в имени класа различает возможности классов, наследующих эти классы.Так вот, как мне узнать все классы, наследующие, например, класс BATYA1 ?Я понятно выразился? | |
|
|
|
|
|
|
|
для: 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>';
?>
|
| |
|
|
|
|
|
|
|
для: EXP
(25.10.2007 в 19:50)
| | мм..Спасибо :-) | |
|
|
|
|
|
|
|
для: jiraff
(25.10.2007 в 20:27)
| | Но это не совcем то... Я знаю только что есть класс Father, и соответственно не имею даже представления о обьектах наследующих его классов.Тоесть мне нужно наделать обьектов под каждый класс и проверить каждый на принадлежность is_subclass_of($obj, 'Father')...Но я думал есть какой-нибудь более простой способ для получения списка всех дочерних классов класса... | |
|
|
|
|
|
|
|
для: jiraff
(25.10.2007 в 20:45)
| | сам класс не содержит инфу какие классы его наследуют,
это можно сделать только внутри наследующих классов get_parent_class($this) , или получив их объекты.
В вашем случае проще сделать поиск строки
"class 'любое слово' extends Fazer"
по файлам со всеми классами | |
|
|
|
|
|
|
|
для: jiraff
(25.10.2007 в 19:03)
| | Список наследников ни одна функция не возвращает, но вы можете получить полный список классов при помощи функции get_declared_classes () и в цикле определить является ли каждый из классов наследником базового класса при помощи функции is_a(). | |
|
|
|
|
|
|
|
для: cheops
(26.10.2007 в 10:50)
| | Так is_a() вроде принимает обьект и имя класса, и если обьект является экземпляром класса, имя которого передано функции, то возвращает true.Тут is_subclass_of() нужен.. | |
|
|
|