runkit_class_adopt

(PECL runkit >= 0.7.0)

runkit_class_adopt Конвертирует базовый класс в наследованный ("усыновляет"). Дополняет методы наследованными при необходимости.

Описание

bool runkit_class_adopt ( string $classname , string $parentname )

Список параметров

classname

"Усыновляемый" класс

parentname

Родительский класс

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Пример runkit_class_adopt()

<?php
class myParent {
  function 
parentFunc() {
    echo 
"Вывод родительской функции\n";
  }
}

class 
myChild {
}

runkit_class_adopt('myChild','myParent');
myChild::parentFunc();
?>

Результат выполнения данного примера:

Вывод родительской функции

Смотрите также

  • runkit_class_emancipate() - Конвертирует наследующий класс в базовый, удаляет из него наследуемые методы.

Коментарии

Function visibility (in PHP5) has some quirks as compared to the normal behavior with "extends".  Consider the following:

<?php
   
class base {
        public function 
a() { $this->b(); }
        private function 
b() { echo "This is b()"; }
    }
?>

This will work fine:
<?php
   
class inherit extends base {
        public function 
c() { $this->a(); }
    }

   
$x = new inherit;
   
$x->c();
?>

while this:
<?php
   
class adopt {
        public function 
c() { $this->a(); }
    }
   
runkit_class_adopt('adopt','base');
   
$x = new adopt;
   
$x->c();
?>

will generate a fatal "Call to private method base::b() from context 'adopt'" error.  Protected members can be called from the inherited methods, but still cannot be called from the original class (i.e. if b() were declared protected, the example would work as written, but adopt::c() still could not call base::b() directly.

Functions such as is_subclass_of(), is_a(), and the instanceof operator also do not detect the new lineage of the object; if you are using this function to simulate multiple or dynamic inheritance, you may need to implement your own method of determining class lineage.

[EDIT by danbrown AT php DOT net: Merged addendum to post by original author.]
2005-09-02 18:09:45
http://php5.kiev.ua/manual/ru/function.runkit-class-adopt.html

    Поддержать сайт на родительском проекте КГБ