L'utilisation de méthodes getter présente plusieurs avantages. Déjà mentionné sont le formatage, en gardant l'interface externe de la classe même lorsque les internes changent, et le débogage. Je les utilise aussi parfois pour la mise en cache si vous avez une propriété calculée.
par exemple
class TestClass
{
private $_cachedTestProperty;
public function __get($varname)
{
switch ($varname)
{
case "testProperty":
if (!isset($this->_cachedTestProperty))
{
$this->_cachedTestProperty = /*calculate property*/
}
return $this->_cachedTestProperty;
break;
}
}
}
Si vous faites cela, vous aurez besoin de se rappeler de désinitialiser la valeur en cache si un autre changement à la classe le rend obselete
Ils peuvent également fournir un accès en lecture seule à protéger/variables privées
Comme toujours avec ces choses, si vous voulez utiliser une propriété publique ou un getter dépend de ce que vous essayez de faire. Ils ne sont pas toujours meilleurs, c'est un cas d'utiliser le bon outil pour le travail
Ceci est un cas particulier de « changer votre mise en œuvre plus tard, mais garder l'interface même. » – gtrak