Lorsque j'ai appris PHP, c'était à peu près sous forme procédurale, plus récemment, j'ai essayé de m'adapter à la méthode OOP. Cependant, les tutoriels que j'ai suivis ont été produits avant PHP 5.3 quand la liaison statique tardive a été introduite.Syntaxe PHP pour référencer soi-même avec une liaison statique tardive
Ce que je veux savoir est comment puis-je référence self
lors de l'appel d'une fonction d'une classe parente.
Par exemple, ces deux méthodes ont été écrites pour une classe User qui est un enfant de DatabaseObject. En ce moment, ils sont assis dans la classe User, mais comme ils sont utilisés dans d'autres classes enfants de DatabaseObject, j'aimerais les promouvoir pour qu'ils soient inclus dans DatabaseObject.
public static function find_all()
{
global $database;
$result_set = self::find_by_sql("select * from ".self::$table_name);
return $result_set;
}
et:
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;
}
J'ai donc trois questions:
1) Comment puis-je changer la référence self::
quand je me déplace au parent. Est-ce static::
ou quelque chose de similaire?
2) Lorsque j'appelle la fonction de mon code, est-ce que je l'appelle de la même manière, en fonction de la classe enfant, par exemple User::find_all()
ou y a-t-il également un changement?
3) Y at-il autre chose que je dois savoir avant de commencer à hacher les bits?
* (référence) * http://de3.php.net/manual/en/language.oop5 .late-static-bindings.php – Gordon