Führen Sie eine Methode, wenn eine Instanz-Variable in einer PHP-Klasse verwiesen?
-
10-10-2019 - |
Frage
Ist es möglich, eine Funktion auszuführen, wenn einer Variablen in einer PHP-Klasse beziehen, anstatt einfach Rückkehr seinen Wert, ähnlich wie Javascript, die Fähigkeit für eine Variable, ein Verfahren zu halten?
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
}
}
Lösung
Das klingt wie PHP5.3: Lambda / Verschlüsse / anonyme Funktionen
http://php.net/manual/en/functions.anonymous.php
<?php
$greet = function($name) {
printf("Hello %s\r\n", $name);
};
$greet('World');
$greet('PHP');
?>
Andere Tipps
PHP5s magische Methode __get($key)
und __set($key, $value)
könnte sein, was Sie brauchen. Weitere Informationen über sie ist in dem PHP-Handbuch .
Sie sind wahrscheinlich in der falschen Richtung. Sie möchten normalerweise einen Getter getLazyVar()
definieren. Es gibt einen Grund, warum die Leute immer Eigenschaften machen geschützt und definiert Getter / Setter. So können sie die Werte vor- oder nachbearbeiten