gpt4 book ai didi

php - 在忽略参数类型提示的同时调用 PHP 方法

转载 作者:搜寻专家 更新时间:2023-10-31 21:38:01 25 4
gpt4 key购买 nike

给定:

class Foo {
private $bar;

public function setBar(Bar $bar) {
$this->bar = $bar;
}
}

是否有任何方法调用 setBar() 参数不是 ?

$proxy = new Proxy();

$foo = new Foo();
$foo->setBar($proxy);

// with
class Proxy {
}

想法是注入(inject)一个proxy 对象而不是Bar 实例。 Proxy 类是通用的(在依赖注入(inject)框架中),不能用于实现/扩展 Bar


Reflection API 似乎没有提供任何使之成为可能的东西。我希望在不使用 PHP 扩展(标准 PHP 安装 > 5.3)的情况下做到这一点(如果可能的话,我试图单独保留 eval)。

注意:是的,这是很奇怪的东西,我期待对此发表评论,但请留下“答案”以获得问题的实际答案。这不是生产代码。

最佳答案

是否需要调用 setBar(),或者您可以只设置私有(private) $bar 属性吗?

后者可以通过 ReflectionProperty::setAccessible 实现, 然后你可以将任何东西分配给你想要的属性(property),就好像它是一个公共(public)属性(property)一样。它实际上不会将其公开,但可以通过反射类对其进行修改。

AFAIK,如果不在字符串中创建临时类,然后对它们求值,前者是不可能的,这就是模拟框架所做的。

关于php - 在忽略参数类型提示的同时调用 PHP 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14592931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com