在laravel中全局调用basic count函数

jtjikinw  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(124)

我们正在升级我们的laravel项目,它包括从php7到php8的语言升级。考虑以下代码:

$a = new stdClass()
count($a)

将导致:

// php7
==> 1

// php8
==> TypeError  count(): Argument #1 ($value) must be of type Countable|array

现在我们的应用程序相当大,有很多小的碎片,count被用在很多地方,它可能不应该被使用。我基本上都了解了,但理想情况下,我想有某种退路。有没有一种方法可以在laravel应用程序中全局覆盖内置的count函数,希望能像这样做:

// very general pseudocode
function newCount($foo) { 
    try {
        return count($foo); 
    } except {
        \Log::warning('used count on non Countable|array')
        return 1;
    }
}

然后以某种方式绑定它:

// anywhere in the app code
count($a) // ==> will call newCount($a) instead
hwamh0ep

hwamh0ep1#

你有多种方法来实现这一点,使用一些第三方扩展,一种方法是使用uopz,它允许你挂钩到一个预定义的函数并编辑它的行为。
另一种方法是使用一些静态代码分析器--比如PHPStan--或者任何其他的替代方法,来轻松地扫描和更新你的代码。

相关问题