【发布时间】:2017-08-16 16:39:12
【问题描述】:
class Test
{
private $flag;
public function __construct($flag)
{
$this->flag = $flag;
}
public function a()
{
if ($this->flag)
{
$this->b();
}
}
public function b()
{
$this->c();
}
public function c()
{
}
}
外部方法想如何使用b(),但如果不创建Test,他就无法做到。但是 Test 需要一个参数,即使它不会被使用。 b() 也不能是静态的。
【问题讨论】:
-
为什么
b是实例方法,那么如果您在概念上不需要实例来使用它呢?除非我遗漏了什么,否则这应该是静态的,甚至是外部助手。 -
...嗯?介意澄清这个问题吗?
-
您可以尝试默认构造函数值:
public function __construct($flag = null)。否则,您需要确定b()是否真的需要成为该类的一部分。 -
为什么不能是静态的?
-
@JohnSmith 本来很高兴看到完整的图片。如果 b 需要使用 c,而 c 需要一个实例,那么 b 也需要是一个实例方法,至少不需要重构。虽然没有看到真实的代码,我们只能猜测。
标签: php constructor static-methods