PHP Bug? class extends __get
Код:
class A{
public function __get($pName){
return $this->$pName;
}
}
class B extends A{
public $public='public';
private $private='private';
protected $protected='protected';
}
$b = new B();
var_dump($b->public,$b->private,$b->protected);
public function __get($pName){
return $this->$pName;
}
}
class B extends A{
public $public='public';
private $private='private';
protected $protected='protected';
}
$b = new B();
var_dump($b->public,$b->private,$b->protected);
Цитата:
Notice: Undefined property: B::$private in L:\home\sites-cms\www\test.php on line 4
string(6) "public" NULL string(9) "protected"
string(6) "public" NULL string(9) "protected"
Подскажите почему private не печатается, баг или отсутствия знаний?
PHP 5.2.4
А вот доступ он не может получить, потому что наследование такое. Как вы думаете, что будет результатом выполнения такого кода:
Код:
<?php
abstract class A {
public function p() {
echo $this->pr;
}
public function p1() {
echo $this->pb;
}
};
class B extends A {
private $pr='aa';
public $pb='bb';
public function p2() {
echo $this->pr;
}
};
$b = new B();
$b->p1();
$b->p2();
$b->p();
abstract class A {
public function p() {
echo $this->pr;
}
public function p1() {
echo $this->pb;
}
};
class B extends A {
private $pr='aa';
public $pb='bb';
public function p2() {
echo $this->pr;
}
};
$b = new B();
$b->p1();
$b->p2();
$b->p();
Ради интереса посмотрите на вывод:
Код:
<?php
abstract class A {
private $pr='qq';
public function p() {
echo $this->pr;
}
public function p1() {
echo $this->pb;
}
};
class B extends A {
private $pr='aa';
public $pb='bb';
public function p2() {
echo $this->pr;
}
};
$b = new B();
$b->p1();
$b->p2();
$b->p();
abstract class A {
private $pr='qq';
public function p() {
echo $this->pr;
}
public function p1() {
echo $this->pb;
}
};
class B extends A {
private $pr='aa';
public $pb='bb';
public function p2() {
echo $this->pr;
}
};
$b = new B();
$b->p1();
$b->p2();
$b->p();
Цитата:
но доступ из A к private-свойствам B запрещён.
ну а почему тогда к protected есть доступ?
Цитата: clgs
ну а почему тогда к protected есть доступ?
Как это почему? О_о Потому что extends!