访问私有属性和方法的 PHP 函数

这个包提供了一个invade函数,允许你读/写一个对象的私有属性。它还将允许您调用私有方法。

安装

您可以通过作曲家安装包:

composer require spatie/invade

用法

想象一下,你定义了这个类,它有一个私有属性和方法。

class MyClass
{
    private string $privateProperty = 'private value';

    private function privateMethod(): string
    {
        return 'private return value';
    }
}

$myClass = new Myclass();

这就是您如何使用该函数获取私有属性的值invade

invade($myClass)->privateProperty; // returns 'private value'

invade函数还允许您更改私有值。

invade($myClass)->privateProperty = 'changed value';
invade($myClass)->privateProperty; // returns 'changed value

使用invade你还可以调用私有函数。

invade($myClass)->privateMethod(); // returns 'private return value'

让 PHPStan 理解 Invade

PHPStan 将报告每个被入侵的私有方法和属性的错误,因为它不知道您现在可以访问它们。要消除这些错误,请安装PHPStan 扩展安装程序或手动将 invasion PHPStan 扩展添加到您的 PHPStan 配置中:

includes:
    - ./vendor/spatie/invade/phpstan-extension.neon

测试

composer test
vendor/bin/phpstan analyse -c types/phpstan.neon.dist

spatie / invade 使用私有属性和方法的 PHP 函数
标签: