2017-10-23 2 views
0

Ich möchte eine Frage im Zusammenhang mit PHP-Klassen stellen! Nehmen wir an, ich habe einen Kundentisch, eine Straßentabelle und eine andere Tabelle namens Städte. In OOPs muss ich davon ausgehen, dass ich eine Clientklasse, eine Straßenklasse und auch eine Stadtklasse habe. So wird jede Klasse in Bezug auf ein anderes wie folgt aus:PHP-Klassen und erweiterte Klassen

Auftraggeber: clientId, clientFirstname1, clientLastname1, clientAddress, clientStreetCode, clientTownCode, clientPostCode .....

Straßen: streetCode Strasse-, townCode

Gemeinden: townCode, townName

Was würde ich mag fragen, ob ich einen Klienten Rekord erschaffe werde ich ein verlängern Klasse zu einem anderen oder soll ich sie NICHT ERWEITERT lassen und sie dann in PHP als einzelne Klassen einbeziehen?

+0

Was fragen Sie? – Devon

+0

Wenn Sie an ** CLASS ** es denken, das für den Zweck von ** CLASS ** existiert, kann nichts von diesen dreien wirklich gegenseitig sein ** CLASS ** ified. – coderodour

+0

@coderodour classy Antwort – apokryfos

Antwort

1

Erweitern in OOP ist eine is-a Beziehung. In Bezug auf die drei Klassen Client, City, Street, keiner von ihnen is-a Instanz eines anderen von ihnen.

Stattdessen sollten Sie nur Referenzen verwenden. Eine Client hat eine Street und eine Street hat eine City.

class Client { 
    /** 
    * @var Street 
    */ 
    protected $street; 

    // .... 
} 

class Street { 
    /** 
    * @var City 
    */ 
    protected $city; 

    // ... 
} 

class City { 
    // ... 
} 

Vielleicht sollten Sie auch darüber nachdenken, eine neue Klasse Einführung Address, die eine Referenz enthält eine City und einem Street anstelle eines Street mit einem Verweis auf ein City

+0

Vielen Dank für Ihre Antwort philipp. Ich frage, weil, wenn ich einen Client-Datensatz mit sowohl Straßencode als auch Stadtcode (NICHT Straßenname und Stadtname) lesen muss, dann was ich fragen bin, muss ich ihren Namen von der Client-Klasse oder von ihrer verwandten Klasse erhalten. Entschuldigung für die Frage .. – user3448324

+0

Sie fragen die Client-Klasse nach der Straße und Stadt '$ Client-> getStreet() -> getCode()' – Philipp

Verwandte Themen