Расширение методов класса в 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()
?
Или есть способ расширения методов?
6
Author: Rolando Cruz, 2011-09-09
1 answers
Вы можете использовать родителя , чтобы получить высший класс. Даже если в следующем примере вы вызываете его с помощью 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();
?>
6
Author: TJHeuvel, 2011-09-09 09:39:28