我知道在PHP中链接的好处,但我们可以说有以下情况
$Mail = new MailClass("mail")
->SetFrom("X")
->SetTo("X")
->SetSubject("X")
->AddRecipient("X")
->AddRecipient("X")
->AddRecipient("X")
->AddRecipient("X")
->AddRecipient("X")
->AddRecipient("X")
->Send();
Run Code Online (Sandbox Code Playgroud)
返回和重复使用对象是否存在任何问题,如速度或未遵循最佳实践等问题
如果您是Fluent-Interface的新手:Fluent-Interfaces上的Martin Fowler,也可以很好地阅读此内容
我完全理解,它不具备进行编程这种方式,能够像这样被处理:
$Mail = new MailClass("mail");
$Mail->AddRecipien(
array(/*.....*/)
);
$Mail->SetFrom("X");
$Mail->SetTo("X");
$Mail->SetSubject("X");
$Mail->Send();
Run Code Online (Sandbox Code Playgroud)
但是让我说我有一个像这样的对象:
$Order = new Order()
->With(22,'TAL')
->With(38,'HPK')->Skippable()
->With(2,'LGV')
->Priority();
Run Code Online (Sandbox Code Playgroud)
请注意->With(38,'HPK')->Skippable(),这是此类编程的Pro的完美示例
有谁知道在PHP的下一个版本中是否可以使用以下表达式?
(new A())->a(); // Causes a syntax error
Run Code Online (Sandbox Code Playgroud)
我觉得非常讨厌,目前必须写2行而不是1行:
$c = new A();
$c->a();
Run Code Online (Sandbox Code Playgroud) 可能的重复:
PHP:如何在新创建的对象上链接方法?
我可以创建一个实例,并通过以下方式调用它的方法:
$newObj = new ClassName();
$newObj -> someMethod();
Run Code Online (Sandbox Code Playgroud)
但是,有什么办法可以用较短的符号匿名实例呢?我尝试了这个:
(new ClassName())->someMethod();
Run Code Online (Sandbox Code Playgroud)
但是它似乎没有按预期工作。
其他信息:我要调用的方法是公共的,但不是静态的。