downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

runkit_class_emancipate> <Runkit_Sandbox_Parent
[edit] Last updated: Fri, 17 May 2013

view this page in

runkit_class_adopt

(PECL runkit >= 0.7.0)

runkit_class_adopt Convertit une classe de base à une classe héritée, ajoute une méthode ancestrale lorsque approprié

Description

bool runkit_class_adopt ( string $classname , string $parentname )

Liste de paramètres

classname

Le nom de la classe à adopter

parentname

Classe parente pour laquelle la classe enfant s'étend

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.

Exemples

Exemple #1 Exemple avec runkit_class_adopt()

<?php
class myParent {
  function 
parentFunc() {
    echo 
"Sortie Fonction Parente\n";
  }
}

class 
myChild {
}

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

L'exemple ci-dessus va afficher :

Sortie Fonction Parente

Voir aussi

  • runkit_class_emancipate() - Convertit une classe héritée à une classe de base, supprime toute méthode pour qui la portée est ancestrale



add a note add a note User Contributed Notes runkit_class_adopt - [1 notes]
up
-1
muramas at cyberdiscordia dot org
7 years ago
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.]

 
show source | credits | stats | sitemap | contact | advertising | mirror sites