我刚写了以下代码(期望它会失败),但我真的不明白为什么会出现这种行为:
期望结果:由于我调用了一个“受保护”的类成员,与公共成员一样,所以会发生致命错误。
实际结果:...正常工作。
我有什么遗漏吗?
我认为这与Test2扩展Test1有关,因此它可以访问它,但在这种情况下没有意义,因为我不是从Test2而是从Test3上下文中调用“test1()”。所以这意味着“Test3”是一个全新的实例,基本上不公开任何方法。从我的角度来看,这段代码使用了两个完全不同的对象实例。
即使IDE(PHPStorm)说它没问题。
有什么线索吗?
<?php
abstract class Test1 {
protected function methodTest1() {}
}
class Test2 extends Test1{
public function methodTest2() {
$test3 = new Test3();
$test3->methodTest1();
}
}
class Test3 extends Test1 {
}
$test2 = new Test2();
$test2->methodTest2();
期望结果:由于我调用了一个“受保护”的类成员,与公共成员一样,所以会发生致命错误。
实际结果:...正常工作。
我有什么遗漏吗?
我认为这与Test2扩展Test1有关,因此它可以访问它,但在这种情况下没有意义,因为我不是从Test2而是从Test3上下文中调用“test1()”。所以这意味着“Test3”是一个全新的实例,基本上不公开任何方法。从我的角度来看,这段代码使用了两个完全不同的对象实例。
即使IDE(PHPStorm)说它没问题。
有什么线索吗?