😞

Laravel5.5のstr_containsがarrayを許容しなくなった

2021/01/22に公開

概要

Laravel 5.5 ヘルパによると

str_contains関数は指定した文字列が、2つ目の文字列を含んでいるか調べます。(大文字小文字の区別あり)

$contains = str_contains('This is my name', 'my');

// true
指定した文字列に値のどれかが含まれているかを判定するために、値の配列を渡すことも可能です。

$contains = str_contains('This is my name', ['my', 'foo']);

// true

駄菓子菓子実行すると

>>> str_contains('This is my name', ['my', 'foo']);
TypeError: Argument 2 passed to str_contains() must be of the type string, array given on line 1
>>> 

ソースコード

/vendor/symfony/polyfill-php80/bootstrap.php
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

use Symfony\Polyfill\Php80 as p;

if (PHP_VERSION_ID >= 80000) {
    return;
}

if (!defined('FILTER_VALIDATE_BOOL') && defined('FILTER_VALIDATE_BOOLEAN')) {
    define('FILTER_VALIDATE_BOOL', FILTER_VALIDATE_BOOLEAN);
}

if (!function_exists('fdiv')) {
    function fdiv(float $num1, float $num2): float { return p\Php80::fdiv($num1, $num2); }
}
if (!function_exists('preg_last_error_msg')) {
    function preg_last_error_msg(): string { return p\Php80::preg_last_error_msg(); }
}
if (!function_exists('str_contains')) {
    function str_contains(string $haystack, string $needle): bool { return p\Php80::str_contains($haystack, $needle); }
}
if (!function_exists('str_starts_with')) {
    function str_starts_with(string $haystack, string $needle): bool { return p\Php80::str_starts_with($haystack, $needle); }
}
if (!function_exists('str_ends_with')) {
    function str_ends_with(string $haystack, string $needle): bool { return p\Php80::str_ends_with($haystack, $needle); }
}
if (!function_exists('get_debug_type')) {
    function get_debug_type($value): string { return p\Php80::get_debug_type($value); }
}
if (!function_exists('get_resource_id')) {
    function get_resource_id($res): int { return p\Php80::get_resource_id($res); }
}

arrayじゃなくstringになってます。

if (!function_exists('str_contains')) {
    function str_contains(string $haystack, string $needle): bool { return p\Php80::str_contains($haystack, $needle); }
}

注意必要ですねー。

参考

Discussion