summaryrefslogtreecommitdiff
path: root/Zend/zend_builtin_functions.c
diff options
context:
space:
mode:
authorMarcus Boerger <helly@php.net>2003-11-27 17:06:26 +0000
committerMarcus Boerger <helly@php.net>2003-11-27 17:06:26 +0000
commit3be27ecc78d68c2e7beccfc6eedc60e235a080c1 (patch)
treee1cbf3574b2ae4e42b9bae501d76555c491fba13 /Zend/zend_builtin_functions.c
parent7850dddf7ca30913b5c06fcc6a638bb31545f4e0 (diff)
downloadphp-git-3be27ecc78d68c2e7beccfc6eedc60e235a080c1.tar.gz
Add a support function to check for property existance which is different
from checking a property from being empty/set. Update test #26182.
Diffstat (limited to 'Zend/zend_builtin_functions.c')
-rw-r--r--Zend/zend_builtin_functions.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
index 6abbad5e6d..228e9dfaea 100644
--- a/Zend/zend_builtin_functions.c
+++ b/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)