実行時にクラスを拡張することは可能で、私はそれを少し遊んでいましたが、それから私はこれに遭遇しました。それは私には奇妙です。プライベート関数で新しい変数を定義すると、それはパブリック変数になります。少なくとも保護されるべきではありませんか?
これをテストするために使用したコードは次のとおりです。
class FooBar {
public function FooBar() {
$this->t();
}
public function createVariable() {
$this->NewVar();
}
private function NewVar() {
$this->iam = "Hello you!";
}
private function t() {
$this->T = "ballad";
return $this->T;
}
}
$fb = new FooBar();
echo $fb->T;
echo "<br/>";
var_dump($fb);
$fb->createVariable();
echo $fb->iam;
echo "<br/>";
var_dump($fb);
echo "<br/>";
$fb->outer = "okay";
echo $fb->outer;
さらに、実行時にクラスを拡張することが可能であるため、これが不可能なのはなぜですか。
function foo() {
private $this->anewvar = 0; //private is illegal.
}