在 PHP 中编码和使用后期静态绑定时,我发现了一些奇怪的行为。在其父类中创建的子对象static()
可以访问其父类的私有方法。
这是一个例子:
class Attachment
{
public static function createFromFile($file)
{
$attachment = new static();
echo get_class($attachment) . PHP_EOL;
$attachment->loadFromFile($file);
}
private function loadFromFile($file)
{
echo 'attachment';
}
}
class PictureAttachment extends Attachment
{
//...
}
PictureAttachment::createFromFile('example.txt');
输出:
PictureAttachment
attachment
这是正确的行为吗?