PHP 8.4.1 Released!

ReflectionClass::__construct

(PHP 5, PHP 7, PHP 8)

ReflectionClass::__constructConstruye un objeto de tipo ReflectionClass

Descripción

public ReflectionClass::__construct(mixed $argument)

Construye un nuevo objeto ReflectionClass.

Advertencia

Esta función no está documentada actualmente, solamente se encuentra disponible la lista de parámetros.

Parámetros

argument

O bien un string con el nombre de la clase a reflexionar, o un object.

Valores devueltos

No devuelve ningún valor.

Ejemplos

Ejemplo #1 Funcionamiento básico de ReflectionClass

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

El resultado del ejemplo sería algo similar a:

Class [ <internal:Core> class Exception ] {

  - Constants [0] {
  }

  - Static properties [0] {
  }

  - Static methods [0] {
  }

  - Properties [7] {
    Property [ <default> protected $message ]
    Property [ <default> private $string ]
    Property [ <default> protected $code ]
    Property [ <default> protected $file ]
    Property [ <default> protected $line ]
    Property [ <default> private $trace ]
    Property [ <default> private $previous ]
  }

  - Methods [10] {
    Method [ <internal:Core> final private method __clone ] {
    }

    Method [ <internal:Core, ctor> public method __construct ] {

      - Parameters [3] {
        Parameter #0 [ <optional> $message ]
        Parameter #1 [ <optional> $code ]
        Parameter #2 [ <optional> $previous ]
      }
    }

    Method [ <internal:Core> final public method getMessage ] {
    }

    Method [ <internal:Core> final public method getCode ] {
    }

    Method [ <internal:Core> final public method getFile ] {
    }

    Method [ <internal:Core> final public method getLine ] {
    }

    Method [ <internal:Core> final public method getTrace ] {
    }

    Method [ <internal:Core> final public method getPrevious ] {
    }

    Method [ <internal:Core> final public method getTraceAsString ] {
    }

    Method [ <internal:Core> public method __toString ] {
    }
  }
}

Ver también

add a note

User Contributed Notes 5 notes

up
13
danbettles at yahoo dot co dot uk
9 years ago
To reflect on a namespaced class in PHP 5.3, you must always specify the fully qualified name of the class - even if you've aliased the containing namespace using a "use" statement.

So instead of:

<?php
use App\Core as Core;
$oReflectionClass = new ReflectionClass('Core\Singleton');
?>

You would type:

<?php
use App\Core as Core;
$oReflectionClass = new ReflectionClass('App\Core\Singleton');
?>
up
3
me [at] klay [dot] me
11 years ago
Example of usage:

public static function getClassData($class)
{
// Trying to create a new object of ReflectionClass class
$class = new ReflectionClass($class);

$details = sprintf('%s - %s%s%s%s%s%s%s%s',
$class->getName(),
$class->isInternal() ? 'internal class,' : 'user-defined class,',
$class->isTrait() ? ' is trait,' : '',
$class->isInterface() ? ' is interface,' : '',
$class->isAbstract() ? ' is abstract,' : '',
$class->isFinal() ? ' is final,' : '',
$class->isCloneable() ? ' is cloneable,' : '',
$class->isInstantiable() ? ' is instantiable,' : '',
$class->isIterateable() ? ' is iterable : ''
);

return '<pre class="debug">' . rtrim($details, ',') . '</pre>';
}
up
3
gafisher at griasolutions dot com
12 years ago
Running the following code on Windows Vista (I know, I know), PHP 5.3.9, the ReflectionClass constructor actually throws a ReflectionException when the desired class cannot be instantiated:

<?php
try {
$ReflectedClass = new ReflectionClass('NonExist');
} catch (
LogicException $Exception) {
die(
'Not gonna make it in here...');
} catch (
ReflectionException $Exception) {
die(
'Your class does not exist!');
}
?>
up
0
ivo at jansch dot nl
14 years ago
It's very useful to know that you can also use the ReflectionClass to inspect interfaces, even thouth Interfaces are not classes. Example:

<?php

interface Edible
{
public function
eat();
}

$refl = new ReflectionClass("Edible");
$methods = $refl->getMethods();
?>

[Edit by danbrown AT php DOT net - Contains a bugfix by (dbl AT bnet DOT com) on 18-AUG-2010 with the following message: "underline had to be removed for it to work ( new Reflection_Class -> new ReflectionClass )"]
up
-2
cspray at gmail dot com
13 years ago
Useful to know that if you pass a string into the construct and the class cannot be instantiated for some reason a SPL LogicException will be thrown.

This code was ran on a Mac OS X 10.6.7, AMP, PHP 5.3+

<?php

// index.php
try {
$ReflectedClass = new ReflectionClass('NonExist');
} catch (
LogicException $logicDuh) {
print_r($logicDuh);
}

?>

Will return a deeply nested array full of useful information about the error.
To Top