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

search for in the

Reflection> <Exemples
[edit] Last updated: Fri, 24 May 2013

view this page in

Étendre la classe

Si vous voulez créer une version spéciale de la classe interne (par exemple, pour créer une portion HTML mis en évidence lors de l'export, pour avoir un accès facile aux variables des membres au lieu des variables des méthodes, ou bien pour avoir des méthodes utiles), vous pouvez étendre la classe principale.

Exemple #1 Étendre les classes internes

<?php
/**
 * Mon classe Reflection_Method
 */
class My_Reflection_Method extends ReflectionMethod
{
    public 
$visibility = array();

    public function 
__construct($o$m)
    {
        
parent::__construct($o$m);
        
$this->visibility Reflection::getModifierNames($this->getModifiers());
    }
}

/**
 * Demo classe #1
 *
 */
class {
    protected function 
x() {}
}

/**
 * Demo classe #2
 *
 */
class extends {
    function 
x() {}
}

// Affichage des informations
var_dump(new My_Reflection_Method('U''x'));
?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

object(My_Reflection_Method)#1 (3) {
  ["visibility"]=>
  array(1) {
    [0]=>
    string(6) "public"
  }
  ["name"]=>
  string(1) "x"
  ["class"]=>
  string(1) "U"
}
Attention

Si vous écrasez le constructeur, souvenez-vous d'appeler le constructeur parent avant d'insérer le moindre code. Si vous ne le faîtes pas, voici ce qui arrivera : Fatal error: Internal error: Failed to retrieve the reflection object



add a note add a note User Contributed Notes Étendre la classe - [1 notes]
up
0
khelaz at gmail dot com
2 years ago
Extending class ReflectionFunction to get source code of function

<?php
class Custom_Reflection_Function extends ReflectionFunction {
   
    public function
getSource() {
        if( !
file_exists( $this->getFileName() ) ) return false;
       
       
$start_offset = ( $this->getStartLine() - 1 );
       
$end_offset   = ( $this->getEndLine() - $this->getStartLine() ) + 1;

        return
join( '', array_slice( file( $this->getFileName() ), $start_offset, $end_offset ) );
    }
}
?>

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