Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_builtin_functions.c php-src/tests/lang bug26182.phpt
| From: | Marcus Boerger | Date: | Sat, 29 Nov 2003 10:39:55 +0000 |
| Subject: | Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_builtin_functions.c php-src/tests/lang bug26182.phpt | ||
| References: | 1 2 | Groups: | php.zend-engine.cvs |
| Request: | Send a blank email to php-zend-engine-cvs+get-2022@lists.php.net to get a copy of this message | ||
Hello Andi,
in some way reflection api allows you already to check for the property.
But this function simply completes the set of *_exists functions.
regards
marcus
Saturday, November 29, 2003, 10:23:27 AM, you wrote:
> I'm travelling so I'll take a look at the bug report next week (I have very
> bad access here).
> In any case, shouldn't this function exist in the reflection API?
> Andi
> At 05:06 PM 11/27/2003 +0000, Marcus Boerger wrote:
>>helly Thu Nov 27 12:06:26 2003 EDT
>>
>> Modified files:
>> /php-src/tests/lang bug26182.phpt
>> /ZendEngine2 zend_builtin_functions.c
>> Log:
>> Add a support function to check for property existance which is different
>> from checking a property from being empty/set.
>> Update test #26182.
>>
>>
>>Index: php-src/tests/lang/bug26182.phpt
>>diff -u php-src/tests/lang/bug26182.phpt:1.2
>>php-src/tests/lang/bug26182.phpt:1.3
>>--- php-src/tests/lang/bug26182.phpt:1.2 Wed Nov 26 03:47:58 2003
>>+++ php-src/tests/lang/bug26182.phpt Thu Nov 27 12:06:25 2003
>>@@ -17,6 +17,13 @@
>> $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 @@
>> (
>> [x] =>
>> )
>>+bool(false)
>>+bool(false)
>>+bool(false)
>>+bool(false)
>>+bool(false)
>>+bool(true)
>>Index: ZendEngine2/zend_builtin_functions.c
>>diff -u ZendEngine2/zend_builtin_functions.c:1.216
>>ZendEngine2/zend_builtin_functions.c:1.217
>>--- ZendEngine2/zend_builtin_functions.c:1.216 Mon Nov 24 13:13:29 2003
>>+++ ZendEngine2/zend_builtin_functions.c Thu Nov 27 12:06:26 2003
>>@@ -17,7 +17,7 @@
>>
>> +----------------------------------------------------------------------+
>> */
>>
>>-/* $Id: zend_builtin_functions.c,v 1.216 2003/11/24 18:13:29 andi Exp $ */
>>+/* $Id: zend_builtin_functions.c,v 1.217 2003/11/27 17:06:26 helly Exp $ */
>>
>> #include "zend.h"
>> #include "zend_API.h"
>>@@ -42,6 +42,7 @@
>> 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 @@
>> 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 @@
>> /* }}} */
>>
>>
>>+/* {{{ 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)
>>
>>--
>>Zend Engine CVS Mailing List (http://cvs.php.net/)
>>To unsubscribe, visit: http://www.php.net/unsub.php
--
Best regards,
Marcus mailto:helly@php.net