相关疑难解决方法(0)

没有内部类的PHP Builder模式

我一直在阅读Joshua Bloch的Effective Java.我也用PHP开发,我想实现第2项中概述构建器模式,但PHP没有内部类.有没有办法在PHP中实现这种模式,保持产品的构造函数是私有的?

php design-patterns builder

14
推荐指数
2
解决办法
7171
查看次数

方法链的影响

我知道在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 fluent-interface object chaining

7
推荐指数
1
解决办法
1992
查看次数

使用PHP中的对象函数调用链接构造函数

有谁知道在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

4
推荐指数
2
解决办法
1450
查看次数

速记新的Instance-> Method语法在PHP中?

可能的重复:
PHP:如何在新创建的对象上链接方法?

我可以创建一个实例,并通过以下方式调用它的方法:

$newObj = new ClassName();
$newObj -> someMethod();
Run Code Online (Sandbox Code Playgroud)

但是,有什么办法可以用较短的符号匿名实例呢?我尝试了这个:

(new ClassName())->someMethod();
Run Code Online (Sandbox Code Playgroud)

但是它似乎没有按预期工作。

其他信息:我要调用的方法是公共的,但不是静态的。

php oop shorthand

1
推荐指数
1
解决办法
1842
查看次数