Защищенная переменная становится частной в унаследованном классе? - PullRequest
1 голос
/ 20 июля 2011
<?php 
class Example{
public $pub="public";
private $priv = "private";
protected $prot = "protected";
}
class SubClass extends Example{
}
$ex = new Example();
$sub = new SubClass();
/* called indiviually */
echo $sub->priv; // error
echo $sub->prot; // error

echo "<br/>";

echo $ex->pub; // works
echo $ex->prot; // error 
?>

Как видите, вызов защищенной переменной с родительским классом или подклассом вызывает ошибку.Так что я могу предположить: сделать что-то вроде $ prot действует как приватный модификатор в родительском классе, и мы не можем вызывать его извне блока класса. и $ переменная prot при наследовании вподкласс он начинает действовать как закрытая переменная , потому что даже сейчас ему нельзя было вызывать его извне. PS: еще не изучен :: оператор разрешения области видимости.Используется только -> стрелка и $ this

1 Ответ

0 голосов
/ 20 июля 2011

Защищенные переменные доступны внутри подкласса, но выдают ошибку в любой другой области:

<?php 
class Example{
      public $pub="public";
      private $priv = "private";
      protected $prot = "protected";
}
class SubClass extends Example{
      function get_protected() {
           return $this->prot;
      }
}

$ex = new Example();
$sub = new SubClass();

/* called indiviually */
echo $sub->priv; // error
echo $sub->prot; // error

echo $sub->get_protected() // works

echo $ex->pub; // works
echo $ex->prot; // error 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...