Can't explain why this prints "\n1". Private property can't be inherited. That's why constructor should set value of new defined public proverty, but "print $b->number" prints nothing whereas "$b->printNumber()" prints "1".
class A { private $number; public function __construct($number) { $this->number = $number; } public function printNumber() { print $this->number; } } class B extends A { public $number; } $b = new B(1); print $b->number; print "\n"; $b->printNumber();