在PHP中扩展类方法

时间:2011-09-09 09:27:29

标签: php object methods extend

我正在做一个自定义CMS,我已经构建了我的基本内容类:

class Content
{
  public $title;
  public $description;
  public $id;

  static function save()
  {
    $q = "[INSERT THE DATA TO BASE CONTENT TABLE]";
  }
}

class Image extends Content
{
  public $location;
  public $thumbnail;

  public function save()
  {
     // I wanted to do a Content::save() here if I 
     //  declare Contents::save() as static
     $q = "[INSERT THE DATA TO THE IMAGE TABLE]";
  }
}

我的问题是我知道静态函数不能使用$this,但我知道Content::save()需要使用它。

我希望Image::save()致电Content::save(),但我希望他们都被命名为save()并被宣布为public而不是static,因为我需要$this 1}}。

唯一的解决方案是重命名Content::save(),以便我可以在Image::save()内使用吗?

或者有扩展方法的方法吗?

1 个答案:

答案 0 :(得分:6)

您可以使用parent来获得上层阶级。即使在以下示例中使用parent::Save调用它,您仍然可以在父类中使用$this

<?php

class A
{
    public function Save()
    {
        echo "A save";
    }
}


class B
    extends A
{
    public function Save()
    {
        echo "B save";
        parent::Save();
    }
}
$b = new B();
$b->Save();
?>