Перехват всех вызовов к объекту

UserAd

Новичок
Перехват всех вызовов к объекту

необходимо перехватывать все выховы к объекту из его предка.
Вопрос, как?
 

AmdY

Пью пиво
Команда форума
Нет...
Как узнать, с кем будет общаться мой неродившийся сын?
Хотя у меня есть одна извращённая идея, но писать не буду, о то вдруг дети прочитают
 

jonjonson

Охренеть
UserAd, тогда не наследуй, а используй паттерн декоратор или обратись к аспект-ориентированному программированию :)

PHP:
class Child {
    var $age = 5;

    function eat() {
        echo "Tasty!";
    }

    function sex() {
        echo "Pleasantly!";
    }

    function getAge() {
        return $this->age;
    }
}

class Nanny {
    var $child;
    var $nanny_age = 40;

    function Nanny($child) {
        $this->child = $child;
    }

    function eat() {
        $this->cooking();        
        $this->child->eat();
    }

    function sex() {
        if (!$this->isLegalAge($this->child->getAge())) {
            echo "Oh, no baby!";
        } else {
            echo "Foreplay... Condom?";
            $this->child->sex();
        }
    }

    function isLegalAge($age) {
        if ($age <= $this->nanny_age) {
            return false;
        }
        return true;
    }

    function cooking(){
        echo "Pap...";
    }
}

$nanny =& new Nanny(new Child());
$nanny->eat();
$nanny->sex();
 

zerkms

TDD infected
Команда форума
jonjonson
твой пример или откуда взял? ;)

ps:
PHP:
class Nanny { 
[...]
    function isLegalAge($age) {
        return $age > $this->nanny_age;
    } 
[...]
}
 

jonjonson

Охренеть
zerkms, специально для ответа придумал :)
Хоть и не совсем декоратор, но всё же наглядно.
 
Сверху