繁体   English   中英

在PHP中扩展类方法

[英]Extend class methods in PHP

我正在做一个自定义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

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

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

您可以使用父级来获得上层阶级。 即使在下面的示例中,您使用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();
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM