php - расширенные классы переносят объекты - PullRequest
1 голос
/ 07 ноября 2010

Я пытался задать этот вопрос раньше, но, кажется, я поспешил ответить на вопрос и не понял, о чем думал ...

Передается ли значение и объекты $ this в расширенный класс?

<?php

class bar {

    public function foo( $t ) {

        $this->foo = $t;

    }

}

class foo extends bar {

    public function bar () {

        return $this->foo;  

    }

}

$b = new bar();
$b->foo('bar');
$f = new foo();
echo $f->bar();

?>

, если нет, есть ли другое деклярирование (вместо расширений), которое не передает объект родительского класса в дочерний класс?Фил

1 Ответ

2 голосов
/ 07 ноября 2010

Ваш пример приведет к ошибке Undefined property: foo::$foo.Я думаю, что вы пытаетесь использовать свойство static:

class bar {
    protected static $foo;
    public function foo ($t) {
        static::$foo = $t;
    }
}

class foo extends bar {
    public function bar () {
        return static::$foo;  
    }
}

Тогда следующее:

$b = new bar();
$b->foo('bar');
$f = new foo();
echo $f->bar();

... будет эхом bar, что похоже на то, чего вы пытаетесь достичь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...