Browse Source

Add a support function to check for property existance which is different

from checking a property from being empty/set.
Update test #26182.
PEAR_1_4DEV
Marcus Boerger 22 years ago
parent
commit
3be27ecc78
  1. 24
      Zend/zend_builtin_functions.c
  2. 13
      tests/lang/bug26182.phpt

24
Zend/zend_builtin_functions.c

@ -42,6 +42,7 @@ static ZEND_FUNCTION(define);
static ZEND_FUNCTION(defined);
static ZEND_FUNCTION(get_class);
static ZEND_FUNCTION(get_parent_class);
static ZEND_FUNCTION(property_exists);
static ZEND_FUNCTION(method_exists);
static ZEND_FUNCTION(class_exists);
static ZEND_FUNCTION(function_exists);
@ -99,6 +100,7 @@ static zend_function_entry builtin_functions[] = {
ZEND_FE(defined, NULL)
ZEND_FE(get_class, NULL)
ZEND_FE(get_parent_class, NULL)
ZEND_FE(property_exists, NULL)
ZEND_FE(method_exists, NULL)
ZEND_FE(class_exists, NULL)
ZEND_FE(function_exists, NULL)
@ -756,6 +758,28 @@ ZEND_FUNCTION(get_class_methods)
/* }}} */
/* {{{ proto bool property_exists(object obj, string property_name)
Checks if the object has a property */
ZEND_FUNCTION(property_exists)
{
zval **object, **property;
if (ZEND_NUM_ARGS()!=2 || zend_get_parameters_ex(2, &object, &property)==FAILURE) {
ZEND_WRONG_PARAM_COUNT();
}
if ((*object)->type != IS_OBJECT) {
RETURN_FALSE;
}
if (Z_OBJ_HANDLER_PP(object, has_property) && Z_OBJ_HANDLER_PP(object, has_property)(*object, *property, 1 TSRMLS_CC)) {
RETURN_TRUE;
} else {
RETURN_FALSE;
}
}
/* }}} */
/* {{{ proto bool method_exists(object object, string method)
Checks if the class method exists */
ZEND_FUNCTION(method_exists)

13
tests/lang/bug26182.phpt

@ -17,6 +17,13 @@ class A {
$t = new A ();
print_r($t);
var_dump(property_exists($t, 'x'));
var_dump(property_exists($t, 'y'));
var_dump(property_exists($t, 'z'));
var_dump(isset($t->y));
var_dump(property_exists($t, 'y'));
$t->z = 1;
var_dump(property_exists($t, 'z'));
?>
--EXPECT--
@ -24,3 +31,9 @@ a Object
(
[x] =>
)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(true)
Loading…
Cancel
Save