To co robisz mija się z ideą dziedziczenia w programowaniu obiektowym. Skoro klasa B rozszerza klasę A, to znaczy, że w klasie B mamy takie same pola i metody, jak w klasie A. Przykład:
<?php
class A {
private $zmienna_a;
private $zmienna_b;
public function setA($a) { $this->zmienna_a = $a; }
public function setB($b) { $this->zmienna_b = $b; }
}
class B extends A {
}
$B = new B();
$B->setA('A');
$B->setB('B');
?>
Pozostaje pytanie, dlaczego w klasie B nie mamy dostępu bezpośredniego do pól $zmienna_a i $zmienna_b. Otóż dlatego, że są to pola prywatne (private) klasy A, zatem dostęp do nich jest możliwy tylko z publicznej metody w tej właśnie klasie A. Dodam jeszcze jeden przykład:
<?php
class A {
protected $zmienna_a;
private $zmienna_b;
public function setA($a) { $this->zmienna_a = $a; }
public function setB($b) { $this->zmienna_b = $b; }
public function getB() { return $this->zmienna_b; }
}
class B extends A {
function test() {
}
}
$B = new B();
$B->setA('A');
$B->setB('B');
$B->test();
?>
Aby zachować paradygmaty dziedziczenia i hermetyzacji danych, należałoby wykorzystać modyfikator dostępu protected.