Browse Source

- Allow "= null" default for parameters with a class type-hint.

PHP-5.1
Derick Rethans 21 years ago
parent
commit
aa9ea59851
  1. 1
      NEWS
  2. 10
      Zend/zend_compile.c

1
NEWS

@ -2,6 +2,7 @@ PHP NEWS
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? Nov 2005, PHP 5.1 ?? Nov 2005, PHP 5.1
- Allow recursive calls to __get/__set for different properties. (Dmitry) - Allow recursive calls to __get/__set for different properties. (Dmitry)
- Allow "= null" default for parameters with a class type-hint. (Derick)
- Upgraded PEAR to version 1.4.4. (Greg) - Upgraded PEAR to version 1.4.4. (Greg)
- Fixed bug in mysqli extension with unsigned int(11) being represented as - Fixed bug in mysqli extension with unsigned int(11) being represented as
signed integer in PHP instead of string in 32bit systems. (Andrey) signed integer in PHP instead of string in 32bit systems. (Andrey)

10
Zend/zend_compile.c

@ -1273,15 +1273,23 @@ void zend_do_receive_arg(zend_uchar op, znode *var, znode *offset, znode *initia
cur_arg_info->pass_by_reference = pass_by_reference; cur_arg_info->pass_by_reference = pass_by_reference;
if (class_type->op_type != IS_UNUSED) { if (class_type->op_type != IS_UNUSED) {
cur_arg_info->allow_null = 0;
if (class_type->u.constant.type == IS_STRING) { if (class_type->u.constant.type == IS_STRING) {
cur_arg_info->class_name = class_type->u.constant.value.str.val; cur_arg_info->class_name = class_type->u.constant.value.str.val;
cur_arg_info->class_name_len = class_type->u.constant.value.str.len; cur_arg_info->class_name_len = class_type->u.constant.value.str.len;
if (op == ZEND_RECV_INIT) {
if (Z_TYPE(initialization->u.constant) == IS_NULL || (Z_TYPE(initialization->u.constant) == IS_CONSTANT && !strcasecmp(Z_STRVAL(initialization->u.constant), "NULL"))) {
cur_arg_info->allow_null = 1;
} else {
zend_error(E_COMPILE_ERROR, "Default value for parameters with a class type hint can only be NULL");
}
}
} else { } else {
cur_arg_info->array_type_hint = 1; cur_arg_info->array_type_hint = 1;
cur_arg_info->class_name = NULL; cur_arg_info->class_name = NULL;
cur_arg_info->class_name_len = 0; cur_arg_info->class_name_len = 0;
} }
cur_arg_info->allow_null = 0;
} else { } else {
cur_arg_info->class_name = NULL; cur_arg_info->class_name = NULL;
cur_arg_info->class_name_len = 0; cur_arg_info->class_name_len = 0;

Loading…
Cancel
Save