Arve fra klasse

Tags:    php

Hej udviklere,

Hvis jeg nu har en klasse som udelukkende er beregnet til at arve fra (altså en abstrakt klasse så vidt jeg har forstået) som denne:

Fold kodeboks ind/udKode 


Klassen indeholder flere variable og metoder. En instans af klassen er beregnet til at repræsenterer en række i en MySQL tabel. Til fælles for rækkerne i en tabel ligger de alle i den samme tabel, derfor er $db_table erklæreret static.

Jeg definerer en ny klasse til at repræsenterer tabellen t_personer og t_biler (bare for at tage et eksempel)

Fold kodeboks ind/udKode 


Nu kalder jeg så klasserne på følgende måde

Fold kodeboks ind/udKode 


Jeg er stadig ny i OOP, og da jeg satte disse klasser sammen havde jeg ikke forudset at det sidste kald "TBiler::getTable()" OGSÅ ville returnerer "t_personer". Det er selvfølgelig logisk nok, men jeg kunne godt tænke mig at TBiler::getTable() havde returnerer "t_biler".

Jeg er ganske klar over at dette ikke er muligt med lige præcis denne klasse-struktur, MEN hvordan kommer jeg uden om det her problem :-)?



Sådan helt kort sagt så laver du den statiske variabel om til en instantvariabel i stedet. I og med at den er statisk findes den jo altså kun en gang, og derfor vil den altid kun kunne.. ja eksistere en gang :p.

Det giver heller ikke meget mening i dette tilfælde at have det som en statisk variabel IMO - i hvert fald ikke på den abstrakte klasse, så skulle du lægge det ned som statiske variabler på dine klasser der arver fra den abstrakte klasse - det er sådan lige umiddelbart de 2 løsninger jeg kan komme på som du kan komme uden om problemet på.



Sådan helt kort sagt så laver du den statiske variabel om til en instantvariabel i stedet. I og med at den er statisk findes den jo altså kun en gang, og derfor vil den altid kun kunne.. ja eksistere en gang :p.

Det giver heller ikke meget mening i dette tilfælde at have det som en statisk variabel IMO - i hvert fald ikke på den abstrakte klasse, så skulle du lægge det ned som statiske variabler på dine klasser der arver fra den abstrakte klasse - det er sådan lige umiddelbart de 2 løsninger jeg kan komme på som du kan komme uden om problemet på.


Okay, lad os sige jeg ligger variablen ned i de klasser jeg arver fra. Er det så muligt at kalde den variabel fra den abstrakte klasse? Eller skal de metoder som bruger netop denne variabel så OGSÅ lægges ned i de klasser som der arves fra?



t