Как я могу проверить, является ли строка допустимым путем в PHP без предупреждения, если строка не является допустимым путем?
Когда я использую file_get_contents
, is_file
, realpath
, file_exists
со строкой, которая не является путем, я получаю следующее предупреждение.
"function_name ()" ожидает, что параметр 1 является допустимым путем, строка задана в [...]
Итак, как определить, может ли строка быть допустимым путем или нет.
Какого черта вы хотите сделать?Вы можете спросить ...
Хорошо, я хочу создать такую функцию.
funtion my_smart_function( string $path_or_content )
{
$content = is_file_without_warning_if_not_a_valid_path( $path_or_content )
? file_get_contents( $path_or_content )
: $path_or_content;
// do nice stuff with my $content
}
Иногда $path_or_content
будет допустимым путем к файлу, а иногда $path_or_content
будет содержимым самого файла (например, двоичные данные изображения, созданного на лету, который даже не имеет пути (по крайней мере, пока)).В последнем случае все эти функции, связанные со строками, которые я упомянул выше (например, file_exists()
), будут выдавать предупреждение (см. Цитату выше).
Что-то, о чем мне интересно.
realpath('xyz')
не выдает предупреждение, но
realpath( file_get_contents('path/to/actual/image.jpg') )
делает ...
Так что realpath
и другие функции, упомянутые выше, различают string или string, которыеявляется допустимым путем . Так как же мы можем сделать это заранее?