mirror of
https://github.com/php/php-src.git
synced 2026-04-27 18:23:26 +02:00
ce1d69a1f6
PHP requires integer typehints to be written "int" and does not allow "integer" as an alias. This changes type error messages to match the actual type name and avoids confusing messages like "must be of the type integer, integer given".
195 lines
4.4 KiB
PHP
195 lines
4.4 KiB
PHP
--TEST--
|
|
Test usage of ReflectionClassConstant methods __toString(), export(), getName(), getValue(), isPublic(), isPrivate(), isProtected(), getModifiers(), getDeclaringClass() and getDocComment().
|
|
--FILE--
|
|
<?php
|
|
|
|
function reflectClassConstant($base, $constant) {
|
|
$constInfo = new ReflectionClassConstant($base, $constant);
|
|
echo "**********************************\n";
|
|
$class = is_object($base) ? get_class($base) : $base;
|
|
echo "Reflecting on class constant $class::$constant\n\n";
|
|
echo "__toString():\n";
|
|
var_dump($constInfo->__toString());
|
|
echo "export():\n";
|
|
var_dump(ReflectionClassConstant::export($base, $constant, true));
|
|
echo "export():\n";
|
|
var_dump(ReflectionClassConstant::export($base, $constant, false));
|
|
echo "getName():\n";
|
|
var_dump($constInfo->getName());
|
|
echo "getValue():\n";
|
|
var_dump($constInfo->getValue());
|
|
echo "isPublic():\n";
|
|
var_dump($constInfo->isPublic());
|
|
echo "isPrivate():\n";
|
|
var_dump($constInfo->isPrivate());
|
|
echo "isProtected():\n";
|
|
var_dump($constInfo->isProtected());
|
|
echo "getModifiers():\n";
|
|
var_dump($constInfo->getModifiers());
|
|
echo "getDeclaringClass():\n";
|
|
var_dump($constInfo->getDeclaringClass());
|
|
echo "getDocComment():\n";
|
|
var_dump($constInfo->getDocComment());
|
|
echo "\n**********************************\n";
|
|
}
|
|
|
|
class TestClass {
|
|
public const /** My Doc comment */ PUB = true;
|
|
/** Another doc comment */
|
|
protected const PROT = 4;
|
|
private const PRIV = "keepOut";
|
|
}
|
|
$instance = new TestClass();
|
|
|
|
reflectClassConstant("TestClass", "PUB");
|
|
reflectClassConstant("TestClass", "PROT");
|
|
reflectClassConstant("TestClass", "PRIV");
|
|
reflectClassConstant($instance, "PRIV");
|
|
reflectClassConstant($instance, "BAD_CONST");
|
|
|
|
?>
|
|
--EXPECTF--
|
|
**********************************
|
|
Reflecting on class constant TestClass::PUB
|
|
|
|
__toString():
|
|
string(38) "Constant [ public boolean PUB ] { 1 }
|
|
"
|
|
export():
|
|
string(38) "Constant [ public boolean PUB ] { 1 }
|
|
"
|
|
export():
|
|
Constant [ public boolean PUB ] { 1 }
|
|
|
|
NULL
|
|
getName():
|
|
string(3) "PUB"
|
|
getValue():
|
|
bool(true)
|
|
isPublic():
|
|
bool(true)
|
|
isPrivate():
|
|
bool(false)
|
|
isProtected():
|
|
bool(false)
|
|
getModifiers():
|
|
int(256)
|
|
getDeclaringClass():
|
|
object(ReflectionClass)#3 (1) {
|
|
["name"]=>
|
|
string(9) "TestClass"
|
|
}
|
|
getDocComment():
|
|
string(21) "/** My Doc comment */"
|
|
|
|
**********************************
|
|
**********************************
|
|
Reflecting on class constant TestClass::PROT
|
|
|
|
__toString():
|
|
string(38) "Constant [ protected int PROT ] { 4 }
|
|
"
|
|
export():
|
|
string(38) "Constant [ protected int PROT ] { 4 }
|
|
"
|
|
export():
|
|
Constant [ protected int PROT ] { 4 }
|
|
|
|
NULL
|
|
getName():
|
|
string(4) "PROT"
|
|
getValue():
|
|
int(4)
|
|
isPublic():
|
|
bool(false)
|
|
isPrivate():
|
|
bool(false)
|
|
isProtected():
|
|
bool(true)
|
|
getModifiers():
|
|
int(512)
|
|
getDeclaringClass():
|
|
object(ReflectionClass)#3 (1) {
|
|
["name"]=>
|
|
string(9) "TestClass"
|
|
}
|
|
getDocComment():
|
|
string(26) "/** Another doc comment */"
|
|
|
|
**********************************
|
|
**********************************
|
|
Reflecting on class constant TestClass::PRIV
|
|
|
|
__toString():
|
|
string(45) "Constant [ private string PRIV ] { keepOut }
|
|
"
|
|
export():
|
|
string(45) "Constant [ private string PRIV ] { keepOut }
|
|
"
|
|
export():
|
|
Constant [ private string PRIV ] { keepOut }
|
|
|
|
NULL
|
|
getName():
|
|
string(4) "PRIV"
|
|
getValue():
|
|
string(7) "keepOut"
|
|
isPublic():
|
|
bool(false)
|
|
isPrivate():
|
|
bool(true)
|
|
isProtected():
|
|
bool(false)
|
|
getModifiers():
|
|
int(1024)
|
|
getDeclaringClass():
|
|
object(ReflectionClass)#3 (1) {
|
|
["name"]=>
|
|
string(9) "TestClass"
|
|
}
|
|
getDocComment():
|
|
bool(false)
|
|
|
|
**********************************
|
|
**********************************
|
|
Reflecting on class constant TestClass::PRIV
|
|
|
|
__toString():
|
|
string(45) "Constant [ private string PRIV ] { keepOut }
|
|
"
|
|
export():
|
|
string(45) "Constant [ private string PRIV ] { keepOut }
|
|
"
|
|
export():
|
|
Constant [ private string PRIV ] { keepOut }
|
|
|
|
NULL
|
|
getName():
|
|
string(4) "PRIV"
|
|
getValue():
|
|
string(7) "keepOut"
|
|
isPublic():
|
|
bool(false)
|
|
isPrivate():
|
|
bool(true)
|
|
isProtected():
|
|
bool(false)
|
|
getModifiers():
|
|
int(1024)
|
|
getDeclaringClass():
|
|
object(ReflectionClass)#3 (1) {
|
|
["name"]=>
|
|
string(9) "TestClass"
|
|
}
|
|
getDocComment():
|
|
bool(false)
|
|
|
|
**********************************
|
|
|
|
Fatal error: Uncaught ReflectionException: Class Constant TestClass::BAD_CONST does not exist in %s:%d
|
|
Stack trace:
|
|
#0 %s(%d): ReflectionClassConstant->__construct(Object(TestClass), 'BAD_CONST')
|
|
#1 %s(%d): reflectClassConstant(Object(TestClass), 'BAD_CONST')
|
|
#2 {main}
|
|
thrown in %s on line %d
|