Here is a concise example of ReflectionFunction usage for Parameter Reflection / introspection (e.g. to automatically generate API descriptions)
<?php
$properties = $reflector->getProperties();
$refFunc = new ReflectionFunction('preg_replace');
foreach( $refFunc->getParameters() as $param ){
//invokes ■ReflectionParameter::__toString
print $param;
}
?>
prints:
Parameter #0 [ <required> $regex ]
Parameter #1 [ <required> $replace ]
Parameter #2 [ <required> $subject ]
Parameter #3 [ <optional> $limit ]
Parameter #4 [ <optional> &$count ]
ReflectionFunction Sınıfı
(PHP 5)
Giriş
ReflectionFunction sınıfı bir işlevle ilgili bilgi verir.
Sınıf Sözdizimi
/* Sabitler */
/* Özellikler */
public
$name
;
/* Yöntemler */
__construct
( string
$isim
)/* Miras alınan yöntemler */
}Özellikler
- name
-
İşlevin ismi. Salt-okunur olup, bir yazma çabası ReflectionException istisnasına yol açar.
Öntanımlı Sabitler
ReflectionFunction Değiştiricileri
-
ReflectionFunction::IS_DEPRECATED -
İşlevin kullanımının önerilmediğini belirtir.
İçindekiler
- ReflectionFunction::__construct — Bir ReflectionFunction nesnesi oluşturur
- ReflectionFunction::export — İşlevi ihraç eder
- ReflectionFunction::getClosure — Returns a dynamically created closure for the function
- ReflectionFunction::invoke — İşlevi çağırır
- ReflectionFunction::invokeArgs — İşlev değiştirgelerini çağırır
- ReflectionFunction::isDisabled — İşlevin iptal edilip edilmediğine bakar
- ReflectionFunction::__toString — Dizgesel tepkiyi görselleştirir
Lorenz R.S.
11-Aug-2011 07:24
uramihsayibok, gmail, com
23-Oct-2010 09:00
ReflectionFunction will not work on class methods - instance or static. That is,
<?php
class A {
function B() {}
static function C() {}
}
new ReflectionFunction("A::B"); // throws "does not exist" ReflectionException
new ReflectionFunction("A::C"); // ditto
?>
The array syntax for method callbacks does not work either but throws a warning instead (__construct wants a string, not an array).
Since I don't know ahead of time whether something is a function or a class method, I have this:
<?php
function ReflectionFunctionFactory($callback) {
if (is_array($callback)) {
// must be a class method
list($class, $method) = $callback;
return new ReflectionMethod($class, $method);
}
// class::method syntax
if (is_string($callback) && strpos($callback, "::") !== false) {
list($class, $method) = explode("::", $callback);
return new ReflectionMethod($class, $method);
}
// objects as functions (PHP 5.3+)
if (version_compare(PHP_VERSION, "5.3.0", ">=") && method_exists($callback, "__invoke")) {
return new ReflectionMethod($callback, "__invoke");
}
// assume it's a function
return new ReflectionFunction($callback);
}
?>
