__invoke():当尝试以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用。
<?php
/**
* FileName: invoke.php
* Date: 2021/5/20
*/
class InvokeDemo
{
public function __construct()
{
echo '我被创建了'.PHP_EOL;
}
public function __invoke()
{
// TODO: Implement __invoke() method.
echo '触发invoke'.PHP_EOL;
}
}
$invokeDemo = new InvokeDemo();
print_r($invokeDemo());
执行后

需要注意的是:
当以函数的形式去调用对象(类)的时候传入的参数交由__invoke()管理也就是$obj()对应,并非交给__construct()方法。
例子:
<?php
/**
* FileName: invoke.php
* Date: 2021/5/20
*/
class InvokeDemo
{
public function __construct($construct)
{
echo $construct.'我被创建了'.PHP_EOL;
}
public function __invoke($invoke)
{
// TODO: Implement __invoke() method.
echo $invoke.'触发invoke'.PHP_EOL;
}
}
$invokeDemo = new InvokeDemo($construct = '我是构造方法参数');
print_r($invokeDemo($invoke = '我是invoke方法参数'));


本文介绍了PHP中的__invoke魔术方法,当对象被当作函数调用时,此方法将自动触发。示例展示了如何在类中定义并使用__invoke,包括构造函数和__invoke方法的参数传递。通过实例代码,理解如何在对象调用中管理参数。
1001

被折叠的 条评论
为什么被折叠?



