【发布时间】:2020-10-09 11:25:03
【问题描述】:
我有点疑惑下面的 PHP 代码是怎么工作的:
class A
{
private function test()
{
print('test' . PHP_EOL);
}
static public function makeInstanceAndCall()
{
$test = new A();
$test->test();
}
}
A::makeInstanceAndCall();
$test = new A();
$test->test();
test() 方法的最后一行调用显然失败了,但是从 makeInstanceAndCall() 方法的静态上下文中调用相同的方法似乎没有。
在生产环境中依赖这种行为是否安全?
我可能缺少哪些 PHP 功能可以使它工作。我刚刚花了一些时间浏览 PHP 文档,但无法真正找到明确的答案。
谢谢。
【问题讨论】:
-
私有方法只能由其类成员使用,并且可以在不创建类实例的情况下调用静态方法,因此一切正常。
-
这是一种不好的做法。访问修饰符用于为类方法和成员提供访问权限。 Private 应该在类中使用,如果您需要任何功能或将来可能需要,那么应该给它 public 访问修饰符。 :)
标签: php