我想知道是否有一种方法可以在PHP中新创建的对象上链接方法?
就像是:
class Foo {
public function xyz() { ... return $this; }
}
$my_foo = new Foo()->xyz();
有人知道实现此目标的方法吗?
在PHP 5.4+中,解析器已被修改,因此您可以执行以下操作
(new Foo())->xyz();
用括号括起来的实例,并链接。
在PHP 5.4之前的版本中,当您使用
new Classname();
在语法上,您不能将方法调用链接到实例化。这是PHP 5.3语法的局限性。实例化对象后,就可以链接了。
我见过的一种解决该问题的方法是某种静态实例化方法。
class Foo
{
public function xyz()
{
echo "Called","\n";
return $this;
}
static public function instantiate()
{
return new self();
}
}
$a = Foo::instantiate()->xyz();
通过将对new的调用包装在静态方法中,可以使用方法调用实例化一个类,然后可以自由地将其链接起来。
你知道吗?也许有更好的办法?
我可以使用Powermock中的,但我想知道Spock有没有办法做到这一点。
Q.如果您在未链接到接口的抽象类中创建抽象方法,您是否仍然遵循编程到接口的原则? 我已经为我创建的所有UI类使用了接口;但是,考虑到接口的原因,我看不到与我想要创建的抽象方法和已经存在的接口的直接关联。 通常,我只会创建抽象方法并完成;但是,我想知道我是否违反了程序到接口的设计原则。 问:我应该为此创建另一个接口,还是继续使用抽象方法? 注意:这不是一个接口与抽象类的问题。 注意:我的基类更多的是
我也用同样的结果尝试了这个视频中的建议。 最后一件事,我已经没有想法了:在Chrome开发者控制台,我看到创建失败,错误为400,这表明我需要更新白名单URL。我通过添加以下URL实现了这一点: 这个问题一直让我抓狂。我想我什么都试过了。让我想知道我是否需要在Firebase中重新创建我的应用程序。
问题内容: 我有一个JpaRepository在Spring MVC应用程序中持久保存新创建的实体。这个实体看起来像这样(非常简化): 和版本实体: 我创建一个这样的翻译对象 其中11是从一开始就已经存在于数据库中的版本。请注意,我没有为ClientVersionDTO 设置和的值。 然后,我有一个持久化新对象的服务(我使用库将DTO转换为实体) 请注意我的评论“ t2.getVersion()返
我编写了一个类,它读取整个文件并返回内容。