微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 动态调用类中的方法

我最近研究过一些代码,我必须在类中动态调用一个方法.

我最终使用的解决方案是2行,因为“动态”部分只是我需要调用的实际方法名称的一小部分.

这是我最终使用的解决方案:

$pull = "pull_{$type}_day"; 
$day = $download->$pull();

最初,我试图让这一行,但它没有用.从技术意义上讲,为什么上面的代码有效但下面的代码没有?

$day = $download->"pull_{$type}_day"();

解决方法:

如果您使用字符串或字符串的一部分作为方法(或属性),则需要将其包围在{}中,如下所示:

#property
echo $foo->{"bar"};

#method call
echo $foo->{"bar"}();

因此,如果您需要字符串部分中的变量,则遵循与任何普通字符串相同的规则.

 echo $foo->{"bar".$bar}();
 echo $foo->{'bar'.$bar.'bar'}();
 echo $foo->{"bar{$bar}bar"}();

等等.这是一个完整的例子

class foo{

    function pull_1_day(){
        echo "bar";
    }
}

$a = 1;

(new foo)->{"pull_{$a}_day"}();

输出

  bar

Sandbox

这与PHP允许您使用字符串作为变量的方式相同,例如:

$foo = 'bar';
echo ${"foo"}; 

输出

bar

Sandbox

同样的语法.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐