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
    }

}
War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top