korpus
злой бобёр
Не силён в ООП, поэтому столкнулся с этой особенностью только сейчас.
Оказывается, что в одном классе может существовать сразу две переменных с одним именем. Это происходит. если один класс, содержащий эту переменную, расширить другим классом, в котором определить эту же самую переменную.
Такое поведение присуще и PHP5.2 и PHP5.3.
Как можно обращаться к таким "переопределяемым" переменным, чтобы знать наверняка, что выбирается именно нужная? Я может хочу обратиться к переменной, которая определена в классе a, но хочу сделать это из класса d, который создан последовательно расширением классов a, b, c.
И как данная особенность может быть использована в ООП на PHP? Я думаю, что это может только запутать. Так, столкнувшись с этим в Yii, я был запутан.
PHP:
<?php
error_reporting(E_ALL | E_STRICT);
ini_set("display_errors", "1");
class a
{
private $_title='a-title';
function echo_title()
{
echo $this->_title;
}
}
$a = new a;
var_dump($a);
class b extends a
{
private $_title='b-title';
function echo_title()
{
echo $this->_title;
}
}
$b = new b;
var_dump($b);
?>
<p>$_title в объекте a = <?php echo $a->echo_title(); ?></p>
<p>$_title в объекте b = <?php echo $b->echo_title(); ?></p>
Такое поведение присуще и PHP5.2 и PHP5.3.
Как можно обращаться к таким "переопределяемым" переменным, чтобы знать наверняка, что выбирается именно нужная? Я может хочу обратиться к переменной, которая определена в классе a, но хочу сделать это из класса d, который создан последовательно расширением классов a, b, c.
И как данная особенность может быть использована в ООП на PHP? Я думаю, что это может только запутать. Так, столкнувшись с этим в Yii, я был запутан.