2009-08-17 14 views

Respuesta

10

El Reflection API puede ser de su interés (si no es excesivo). Específicamente: -

<?php 
    Reflection::export(new ReflectionClass('View')); 
?> 

Consulte el manual para obtener ejemplos más detallados.

+1

Más flexible que get_class_methods porque también puede obtener parámetros y comentarios. – Kris

+1

También es útil: 'get_class ($ object);' Cuando se trata de un objeto generado de una clase generada, puede pasar esto al constructor ReflectionClass. Ver http://php.net/manual/en/function.get-class.php –

1

Además de las funciones mencionadas por Mathachew, también puede consultar Reflection, especialmente la clase ReflectionClass.

$class = new ReflectionClass('YourViewClass'); 
$class->getMethods(); 
$class->getProperties(); 
1

I escribió esta función simple que no sólo muestra los métodos de un objeto dado, sino que también muestra sus propiedades, encapsulación y alguna otra información útil, como notas de la versión si se les da.

function TO($object){ //Test Object 
       if(!is_object($object)){ 
        throw new Exception("This is not a Object"); 
        return; 
       } 
       if(class_exists(get_class($object), true)) echo "<pre>CLASS NAME = ".get_class($object); 
       $reflection = new ReflectionClass(get_class($object)); 
       echo "<br />"; 
       echo $reflection->getDocComment(); 

       echo "<br />"; 

       $metody = $reflection->getMethods(); 
       foreach($metody as $key => $value){ 
        echo "<br />". $value; 
       } 

       echo "<br />"; 

       $vars = $reflection->getProperties(); 
       foreach($vars as $key => $value){ 
        echo "<br />". $value; 
       } 
       echo "</pre>"; 
      } 

Para mostrarle cómo funciona, creé una clase de ejemplo aleatoria. Vamos a crear una clase llamada Persona y colocar algunas notas de la versión justo por encima de la declaración de clase:

 /** 
     * DocNotes - This is description of this class if given else it will display false 
     */ 
     class Person{ 
      private $name; 
      private $dob; 
      private $height; 
      private $weight; 
      private static $num; 

      function __construct($dbo, $height, $weight, $name) { 
       $this->dob = $dbo; 
       $this->height = (integer)$height; 
       $this->weight = (integer)$weight; 
       $this->name = $name; 
       self::$num++; 

      } 
      public function eat($var="", $sar=""){ 
       echo $var; 
      } 
      public function potrzeba($var =""){ 
       return $var; 
      } 
     } 

Ahora vamos a crear una instancia de una persona y se envuelve con nuestra función.

$Wictor = new Person("27.04.1987", 170, 70, "Wictor"); 
    TO($Wictor); 

Esta información es la salida sobre el nombre de clase, parámetros y métodos, incluyendo información encapsulación y el número y nombres de los parámetros para cada método, la ubicación método y líneas de código donde existe. Vea el resultado a continuación:

CLASS NAME = Person 
/** 
      * DocNotes - This is description of this class if given else it will display false 
      */ 

Method [ public method __construct ] { 
    @@ C:\xampp\htdocs\www\kurs_php_zaawansowany\index.php 75 - 82 

    - Parameters [4] { 
    Parameter #0 [ $dbo ] 
    Parameter #1 [ $height ] 
    Parameter #2 [ $weight ] 
    Parameter #3 [ $name ] 
    } 
} 

Method [ public method eat ] { 
    @@ C:\xampp\htdocs\www\kurs_php_zaawansowany\index.php 83 - 85 

    - Parameters [2] { 
    Parameter #0 [ $var = '' ] 
    Parameter #1 [ $sar = '' ] 
    } 
} 

Method [ public method potrzeba ] { 
    @@ C:\xampp\htdocs\www\kurs_php_zaawansowany\index.php 86 - 88 

    - Parameters [1] { 
    Parameter #0 [ $var = '' ] 
    } 
} 


Property [ private $name ] 

Property [ private $dob ] 

Property [ private $height ] 

Property [ private $weight ] 

Property [ private static $num ] 

Espero que lo encuentre útil. Saludos.

Cuestiones relacionadas