【发布时间】:2011-11-13 15:32:43
【问题描述】:
我正在做一个自定义 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() 中使用它吗?
或者有没有扩展方法的方法?
【问题讨论】:
-
Content::save在您的示例中未声明为静态。您确定您发布的所有内容都正确吗? -
PHP 支持调用静态的东西,尽管它没有被定义为静态的。只要你不使用$this,一切都很好。
-
顺便说一句,您的实际问题是什么? Image 应该调用 Content 的 save 吗?
-
@JOHN,之前发布的函数是我想要的样子,这就是为什么我在
Image::save()插入评论:如果我将 Contents::save() 声明为静态 -
@TJHeuvel:很抱歉,如果我不能清楚地表达我想做什么,是的,我希望
Image::save()调用Content::save(),但我希望两者都被称为save()。我希望两者都成为public而不是static,因为我需要$this。这可能吗?