RE: [PHP-DEV] Accept null type hint in C
| From: | Bob Silva | Date: | Thu, 27 Oct 2005 15:47:36 +0000 |
| Subject: | RE: [PHP-DEV] Accept null type hint in C | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-19761@lists.php.net to get a copy of this message | ||
I tried the "|!O" and that really hoses things.
The | gets processed in zend_parse_va_args and removed (spec is
incremented), so that "!O" get sent to zend_parse_arg_impl. Inside of
zend_parse_arg_impl, the ! gets set to char c and spec_walk gets incremented
which makes the check for the null operator fail and also makes the check
for arg type check the ! in the switch case. The result is that "unknown"
got sent as the parameter to the function. Not sure if this would be
classified as a bug, but it doesn't work for trying to accept a null type
hinted parameter in C.
I'll keep playing around with parameter combinations and see what works.
Thanks
Bob Silva
-----Original Message-----
From: Marcus Boerger [mailto:helly@php.net]
Sent: Thursday, October 27, 2005 12:06 AM
To: Bob Silva
Cc: internals@lists.php.net
Subject: Re: [PHP-DEV] Accept null type hint in C
Hello Bob,
Thursday, October 27, 2005, 8:51:18 AM, you wrote:
> Hi,
> Since NULL typehints are allowed in userland, how would I go about it in
C?
> I have ZEND_ARG_OBJ_INFO(0, obj, ZObject, 1) which has allow null set on.
> Then in the method:
> if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &objA,
> pow_ce_ZObject) == FAILURE) {
Use "|!O" or "|!o" instead. '!' allows NULL and sets the return value
in
c-land to NULL.
marcus
> If I pass NULL, it fails on the grounds that it isn't a ZObject.
> Also,
> Could someone explain the purpose of the zend_parse_method_parameters
> function as opposed to using the zend_parse_parameters?
> Thanks
> Bob Silva
Best regards,
Marcus