php-src/ext/standard/tests/file/basename_basic.phpt
Nikita Popov b10416a652 Deprecate passing null to non-nullable arg of internal function
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.
2021-02-11 21:46:13 +01:00

99 lines
1.5 KiB
PHP

--TEST--
basename() basic functionality
--SKIPIF--
<?php
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip non-windows only test');
}
?>
--FILE--
<?php
$file_paths = array (
/* simple paths (forward slashes) */
"bar",
"/foo/bar",
"foo/bar",
"/bar",
/* simple paths with trailing slashes (forward slashes) */
"bar/",
"/bar/",
"/foo/bar/",
"foo/bar/",
"/bar/",
/* simple paths (backslashes) */
"bar",
"\\foo\\bar",
"foo\\bar",
"\\bar",
/* simple paths with trailing slashes (backslashes) */
"bar\\",
"\\bar\\",
"\\foo\\bar\\",
"foo\\bar\\",
"\\bar\\",
/* paths with numeric strings */
"10.5\\10.5",
"10.5/10.5",
"10.5",
"105",
"/10.5",
"\\10.5",
"10.5/",
"10.5\\",
"10/10.zip",
"0",
'0',
/* path with spaces */
" ",
' ',
/* empty paths */
"",
'',
);
foreach ($file_paths as $file_path) {
var_dump(basename($file_path));
}
?>
--EXPECT--
string(3) "bar"
string(3) "bar"
string(3) "bar"
string(3) "bar"
string(3) "bar"
string(3) "bar"
string(3) "bar"
string(3) "bar"
string(3) "bar"
string(3) "bar"
string(8) "\foo\bar"
string(7) "foo\bar"
string(4) "\bar"
string(4) "bar\"
string(5) "\bar\"
string(9) "\foo\bar\"
string(8) "foo\bar\"
string(5) "\bar\"
string(9) "10.5\10.5"
string(4) "10.5"
string(4) "10.5"
string(3) "105"
string(4) "10.5"
string(5) "\10.5"
string(4) "10.5"
string(5) "10.5\"
string(6) "10.zip"
string(1) "0"
string(1) "0"
string(1) " "
string(1) " "
string(0) ""
string(0) ""