Когда я выучил PHP, он был в значительной степени процедурным, совсем недавно я пытался приспособиться к ООП-образцу. Однако учебники, за которыми я следовал, были созданы до PHP 5.3, когда было введено позднее статическое связывание.
Что я хочу знать, так это как ссылаться на self
при вызове функции из родительского класса.
Например, эти два метода были написаны для класса User, который является потомком DatabaseObject. Прямо сейчас они находятся внутри класса User, но, поскольку они используются в других дочерних классах DatabaseObject, я бы хотел, чтобы они были включены в DatabaseObject.
public static function find_all()
{
global $database;
$result_set = self::find_by_sql("select * from ".self::$table_name);
return $result_set;
}
и
protected function cleaned_attributes()
{
global $database;
$clean_attributes = array();
foreach($this->attributes() as $key => $value)
{
$clean_attributes[$key] = $database->escape_value($value);
}
return $clean_attributes;
}
Итак, у меня три вопроса:
1) Как изменить ссылку self::
, когда я перемещаю ее к родителю. Это static::
или что-то подобное?
2) При вызове функции из моего кода я вызываю ее таким же образом, как функцию дочернего класса, например, User::find_all()
, или там также есть изменение?
3) Есть ли еще что-то, что мне нужно знать, прежде чем я начну нарезать кусочки?