Exécuter une méthode quand une variable d'instance est référencée dans une classe PHP?
-
10-10-2019 - |
Question
Est-il possible d'exécuter une fonction en référence à une variable dans une classe php plutôt que de simplement retourner sa valeur, semblable à la capacité de javascript pour une variable pour tenir une méthode?
class LazyClassTest()
{
protected $_lazyInitializedVar;
public function __construct()
{
/* // How can this call and return runWhenReferrenced() when
// someone refers to it outside of the class:
$class = new LazyClass();
$class->lazy;
// Such that $class->lazy calls $this->runWhenReferrenced each
// time it is referred to via $class->lazy?
*/
$this->lazy = $this->runWhenReferrenced();
}
protected function runWhenReferrenced()
{
if (!$this->_lazyInitializedVar) {
$this->_lazyInitializedVar = 'someValue';
}
return $this->_lazyInitializedVar
}
}
La solution
Cela sonne comme PHP5.3: lambda / fermetures / fonctions anonymes
http://php.net/manual/en/functions.anonymous.php :
<?php
$greet = function($name) {
printf("Hello %s\r\n", $name);
};
$greet('World');
$greet('PHP');
?>
Autres conseils
Vous dirige probablement dans la mauvaise direction. Vous voulez normalement définir un getLazyVar()
getter. Il y a une raison pour laquelle les gens font toujours des propriétés protégées et getters / setters définis. Ils peuvent ainsi pré ou post-traitement des valeurs
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow