小编onc*_*ode的帖子

PHP后期静态绑定无法正常工作

在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');
Run Code Online (Sandbox Code Playgroud)

输出:

PictureAttachment
attachment
Run Code Online (Sandbox Code Playgroud)

这是正确的行为吗?

php late-static-binding static-binding

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

标签 统计

late-static-binding ×1

php ×1

static-binding ×1