Type Hints with Null

From: Date: Fri, 07 Oct 2005 20:29:51 +0000
Subject: Type Hints with Null
Groups: php.internals 
Request: Send a blank email to internals+get-19482@lists.php.net to get a copy of this message
Hello, attached is a patch (by Markus) that allows you to make typehints optionally take NULL as default value too, f.e.: class P { } class T { function f(P $p = NULL) { var_dump($p); } } $o=new T(); $o->f(new P); $o->f(NULL); $o->f(); I would like to commit this patch to HEAD pending any objections. regards, Derick -- Derick Rethans http://derickrethans.nl | http://ez.no | http://xdebug.org

Index: Zend/zend_compile.c =================================================================== RCS file: /repository/ZendEngine2/zend_compile.c,v retrieving revision 1.665 diff -u -p -d -r1.665 zend_compile.c --- Zend/zend_compile.c 3 Oct 2005 08:21:15 -0000 1.665 +++ Zend/zend_compile.c 6 Oct 2005 18:21:02 -0000 @@ -1324,7 +1324,7 @@ void zend_do_receive_arg(zend_uchar op, cur_arg_info->class_name = NULL; cur_arg_info->class_name_len = 0; } - cur_arg_info->allow_null = 0; + cur_arg_info->allow_null = (op == ZEND_RECV_INIT && (Z_TYPE(initialization->u.constant) == IS_NULL || (Z_TYPE(initialization->u.constant) == IS_CONSTANT && !strcasecmp(Z_STRVAL(initialization->u.constant), "NULL")))) ? 1 : 0; } else { cur_arg_info->class_name = NULL; cur_arg_info->class_name_len = 0;
« previous php.internals (#19482) next »