mam wrażenie, że dalej nie odróżniasz definicji klasy od obiektu. W definicji podajesz opis pól i metod jakie zawiera dana klasa, który możesz potem rozszerzyć w klasie potomnej o dodatkowe pola / metody - klasa potomna może korzystać z pól i metod rodzica - to jest właśnie dziedziczenie. Sama definicja klasy nie tworzy żadnych obiektów - robi się to używając operatora new
. Możesz utworzyć wiele obiektów danej klasy, każdy z nich będzie miał takie zmienne jak w definicji klasy.
$A = new A();
$A::setValue(1234);
$B = new B();
var_dump($B->getValue());
klasa B dziedziczy po klasie A, więc obiekt $B będzie miał pole 'value', jego wartość nie ma jednak nic wspólnego z wartościami pól innych obiektów
Ale np. kiedy mam złożony skrypt to w jednej klasie mam np. dane do bazy, w innej klasie mam metody do logowania itp, a samo jądro skryptu to osobna klasa, więc takie pobieranie wartości z klas rodzica się przydaje czasem. Czy może jakoś inaczej to rozwiązać?
nie zawsze musisz dziedziczyć po danej klasie aby z niej skorzystać, np. w definicji klasy 'Zaloguj' możesz korzystać z obiektu 'BazaDanych'
class Zaloguj {
var $db;
function __construct() {
$this->db = new BazaDanych;
}
}