Subscribe
池塘🐟
Search
Sign up
php
laravel
mysql
docker
redis
rabbitmq
go
js
其他
php \Closure::bind调用类的私有属性、方法
#####可使用场景,在不修改类的属性情况去调用类的私有方法,例如 单元测试某个方法 ``` class A { private function a() { return 'a'; } protected function b() { return 'b'; } private static function aa() { return 'aa'; } private static function bb() { return 'bb'; } } function dd(...$parms) { foreach ($parms as $parm) { echo "<pre>"; var_dump($parm); echo "</pre>"; } die(); } $f1 = \Closure::bind(function () { return $this->a() . '---private' . PHP_EOL . $this->b() . '---protected'; }, new A(),A::class); $f2 = \Closure::bind(function () { return self::aa() . '---private' . PHP_EOL . self::bb() . '---protected'; }, null,A::class); dd($f1(), $f2()); ------------------------------------------------------------------------------ 输出 string(26) "a---private b---protected" string(28) "aa---private bb---protected ```
提交评论
提交