(PHP 5, PHP 7, PHP 8)
ReflectionFunction::__construct β ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° ReflectionFunction
Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° ReflectionFunction.
functionΠΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅.
ΠΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° ReflectionException, Π΅ΡΠ»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ
function Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ReflectionFunction::__construct()
<?php
/**
* ΠΡΠΎΡΡΠΎΠΉ ΡΡΡΡΡΠΈΠΊ
*
* @return int
*/
function counter1()
{
static $c = 0;
return ++$c;
}
/**
* ΠΡΡΠ³ΠΎΠΉ ΡΡΡΡΡΠΈΠΊ
*
* @return int
*/
$counter2 = function()
{
static $d = 0;
return ++$d;
};
function dumpReflectionFunction($func)
{
// ΠΡΠ²ΠΎΠ΄ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ
printf(
"\n\n===> %s ΡΡΠ½ΠΊΡΠΈΡ '%s'\n".
" ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° Π² %s\n".
" ΡΡΡΠΎΠΊΠΈ Ρ %d ΠΏΠΎ %d\n",
$func->isInternal() ? 'internal' : 'user-defined',
$func->getName(),
$func->getFileName(),
$func->getStartLine(),
$func->getEndline()
);
// ΠΠ΅ΡΠ°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
printf("---> ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ:\n %s\n", var_export($func->getDocComment(), true));
// ΠΡΠ²ΠΎΠ΄ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
if ($statics = $func->getStaticVariables())
{
printf("---> Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅: %s\n", var_export($statics, true));
}
}
// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° ReflectionFunction
dumpReflectionFunction(new ReflectionFunction('counter1'));
dumpReflectionFunction(new ReflectionFunction($counter2));ΠΡΠ²ΠΎΠ΄ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π°:
===> user-defined ΡΡΠ½ΠΊΡΠΈΡ 'counter1'
ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° Π² Z:\reflectcounter.php
ΡΡΡΠΎΠΊΠΈ Ρ 7 ΠΏΠΎ 11
---> ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ:
'/**
* ΠΡΠΎΡΡΠΎΠΉ ΡΡΡΡΡΠΈΠΊ
*
* @return int
*/'
---> Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅: array (
'c' => 0,
)
===> user-defined ΡΡΠ½ΠΊΡΠΈΡ '{closure}'
ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° Π² Z:\reflectcounter.php
ΡΡΡΠΎΠΊΠΈ Ρ 18 ΠΏΠΎ 23
---> ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ:
'/**
* ΠΡΡΠ³ΠΎΠΉ ΡΡΡΡΡΠΈΠΊ
*
* @return int
*/'
---> Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅: array (
'd' => 0,
)