mirror of
https://github.com/php/php-src.git
synced 2026-04-22 07:28:09 +02:00
b10416a652
This deprecates passing null to non-nullable scale arguments of internal functions, with the eventual goal of making the behavior consistent with userland functions, where null is never accepted for non-nullable arguments. This change is expected to cause quite a lot of fallout. In most cases, calling code should be adjusted to avoid passing null. In some cases, PHP should be adjusted to make some function arguments nullable. I have already fixed a number of functions before landing this, but feel free to file a bug if you encounter a function that doesn't accept null, but probably should. (The rule of thumb for this to be applicable is that the function must have special behavior for 0 or "", which is distinct from the natural behavior of the parameter.) RFC: https://wiki.php.net/rfc/deprecate_null_to_scalar_internal_arg Closes GH-6475.
56 lines
1.4 KiB
PHP
56 lines
1.4 KiB
PHP
--TEST--
|
|
Test Z_PARAM_OBJ_OR_STR() and Z_PARAM_OBJ_OR_STR_OR_NULL
|
|
--SKIPIF--
|
|
<?php
|
|
if (!extension_loaded('zend_test')) die('skip zend_test extension not loaded');
|
|
?>
|
|
--FILE--
|
|
<?php
|
|
|
|
class Foo {}
|
|
|
|
var_dump(zend_string_or_object("string"));
|
|
var_dump(zend_string_or_object(1));
|
|
var_dump(zend_string_or_object(null));
|
|
var_dump(zend_string_or_object(new stdClass()));
|
|
var_dump(zend_string_or_object(new Foo()));
|
|
|
|
try {
|
|
zend_string_or_object([]);
|
|
} catch (TypeError $exception) {
|
|
echo $exception->getMessage() . "\n";
|
|
}
|
|
|
|
var_dump(zend_string_or_object_or_null("string"));
|
|
var_dump(zend_string_or_object_or_null(1));
|
|
var_dump(zend_string_or_object_or_null(null));
|
|
var_dump(zend_string_or_object_or_null(new stdClass()));
|
|
var_dump(zend_string_or_object_or_null(new Foo()));
|
|
|
|
try {
|
|
zend_string_or_object_or_null([]);
|
|
} catch (TypeError $exception) {
|
|
echo $exception->getMessage() . "\n";
|
|
}
|
|
|
|
?>
|
|
--EXPECTF--
|
|
string(6) "string"
|
|
string(1) "1"
|
|
|
|
Deprecated: zend_string_or_object(): Passing null to parameter #1 ($param) of type object|string is deprecated in %s on line %d
|
|
string(0) ""
|
|
object(stdClass)#1 (0) {
|
|
}
|
|
object(Foo)#1 (0) {
|
|
}
|
|
zend_string_or_object(): Argument #1 ($param) must be of type object|string, array given
|
|
string(6) "string"
|
|
string(1) "1"
|
|
NULL
|
|
object(stdClass)#2 (0) {
|
|
}
|
|
object(Foo)#2 (0) {
|
|
}
|
|
zend_string_or_object_or_null(): Argument #1 ($param) must be of type object|string|null, array given
|