Je voudrais savoir s'il est acceptable/préférable d'utiliser self :: method() et parent :: method() quand on travaille dans les classes php.
Vous pouvez utiliser $ this-> method() mais $ this-> peut également faire référence à une variable de classe, une variable de classe parente ou une méthode de la classe parente. Il n'y a pas d'ambiguïté en soi ::
Est auto :: déprécié et/ou y a-t-il des inconvénients ou des inconvénients à utiliser ce style? Je comprends que self :: et parent :: font référence à une instance statique de la classe, mais dans kohana, à moins que vous ne définissiez spécifiquement une méthode comme statique, il ne semble pas y avoir de différence.
Merci.
Ajouté un exemple: À supposer que ce forum l'application stocke à partir de plusieurs sites ...
class Forum_Controller extends Controller {
function __construct()
{
parent::__construct();
}
function index()
{
echo self::categories();
}
/*
* get a list of categories from a specific site.
*/
private function categories()
{
$db = new Database;
$categories = $db->query("
SELECT * FROM
forum_categories
WHERE fk_site = '$this->site_id'
");
$view = new View('categories_view');
$view->categories = $categories;
return $view;
}
}
Cet exemple travaille dans kohana avec des rapports d'erreur modifiee: error_reporting (E_ALL & ~ E_STRICT); $ This-> id_site est défini dans la classe principale Controller_Core (une bibliothèque de kohana). Autant que je sache, $ ceci n'est pas censé être disponible puisque j'appelle self :: categories() de façon statique, mais c'est seulement quand je définis static() static (statique) que ça lance une erreur . Mais comme je l'ai dit, je préfère plutôt utiliser self :: parce que d'un point de vue lisibilité, je sais exactement où cette fonction devrait être, plutôt que d'utiliser $ this qui cause l'ambiguïté, pour moi.
La raison pour laquelle ce code fonctionne est parce que vous n'êtes jamais référence à un $ cette instance de l'objet dans la méthode catégories appelée statiquement. – null