php-src/ext/reflection/tests/ReflectionProperty_error.phpt
Nikita Popov 122d759618 Always throw TypeException on throwing zpp failures
Introduces a ZEND_PARSE_PARAMS_THROW flag for zpp, which forces to
report FAILURE errors using a TypeException instead of a Warning,
like it would happen in strict mode.

Adds a zend_parse_parameters_throw() convenience function, which
invokes zpp with this flag.

Converts all cases I could identify, where we currently have
throwing zpp usage in constructors and replaces them with this API.
Error handling is still replaced to EH_THROW in some cases to handle
other, domain-specific errors in constructors.
2015-04-06 11:27:34 +02:00

63 lines
1.6 KiB
PHP

--TEST--
Test ReflectionProperty class errors.
--FILE--
<?php
class C {
public static $p;
}
try {
new ReflectionProperty();
} catch (TypeException $re) {
echo "Ok - ".$re->getMessage().PHP_EOL;
}
try {
new ReflectionProperty('C::p');
} catch (TypeException $re) {
echo "Ok - ".$re->getMessage().PHP_EOL;
}
try {
new ReflectionProperty('C', 'p', 'x');
} catch (TypeException $re) {
echo "Ok - ".$re->getMessage().PHP_EOL;
}
$rp = new ReflectionProperty('C', 'p');
var_dump($rp->getName(1));
var_dump($rp->isPrivate(1));
var_dump($rp->isProtected(1));
var_dump($rp->isPublic(1));
var_dump($rp->isStatic(1));
var_dump($rp->getModifiers(1));
var_dump($rp->isDefault(1));
?>
--EXPECTF--
Ok - ReflectionProperty::__construct() expects exactly 2 parameters, 0 given
Ok - ReflectionProperty::__construct() expects exactly 2 parameters, 1 given
Ok - ReflectionProperty::__construct() expects exactly 2 parameters, 3 given
Warning: ReflectionProperty::getName() expects exactly 0 parameters, 1 given in %s on line %d
NULL
Warning: ReflectionProperty::isPrivate() expects exactly 0 parameters, 1 given in %s on line %d
NULL
Warning: ReflectionProperty::isProtected() expects exactly 0 parameters, 1 given in %s on line %d
NULL
Warning: ReflectionProperty::isPublic() expects exactly 0 parameters, 1 given in %s on line %d
NULL
Warning: ReflectionProperty::isStatic() expects exactly 0 parameters, 1 given in %s on line %d
NULL
Warning: ReflectionProperty::getModifiers() expects exactly 0 parameters, 1 given in %s on line %d
NULL
Warning: ReflectionProperty::isDefault() expects exactly 0 parameters, 1 given in %s on line %d
NULL