"Kommt immer drauf an".
Du kannst alles als Objekt behandeln, bis es keinen Sinn mehr macht.
Soll am Bsp. heißen:
Addresse - haben sie alle. Also gibts ein Objekt "Address", das im Object "Organization" genutzt wird.
Firma (company (name)) - hm, macht keinen Sinn, gehört zur Addresse. Ist also eine Eigenschaft der "Address".
Dann gibts mehrere Addressen ... z.B. Billing und Shipping (hier evlt. nicht das Thema) ...
also kann man eine "abstract Address" nutzen.
Sowas fällt einem auch mal später auf, wenn Du schon Code geschrieben hast - dann änderst Du das einfach.
Bsp.:
class Organization {
protected $billingAddress;
protected $shippingAddress;
public function setBillingAddress(BillingAddress $address) {
$this->billingAddress = $address;
return $this;
}
public function setShippingAddress(ShippingAddress $address) {
$this->shippingAddress = $address;
return $this;
}
}
interface AddressInterface {
public function getFirstName();
// ...
public function toArray();
}
abstract AbstractAddress implements AddressInterface {
protected $company; // name
protected $firstname;
protected $middlename;
protected $lastname;
protected $postcode;
protected $city;
protected $region;
protected $street; // array of multiple lines (additional info ect)
// ...
// or set all on a property "protected $data;"
public function __construct(array $data) {
// sets data ...
}
}
class BillingAddress extends AbstractAddress {
const TYPE = 'billing';
}
class ShippingAddress extends AbstractAddress {
const TYPE = 'shipping';
}
$organization = new Organization();
$billingAddressArray = []; // some address data array loaded from db or so ...
$organization->setBillingAddress(new BillingAddress($billingAddressArray))
Alles anzeigen
Es kommt also wirklich immer darauf an.
Abr wie gesagt - oft bemerkt man das beim Schreiben.
Ich nehm einfach mal das Bsp. "Verein" -
erst ist es nur eine Property - ein String, der Vereinsnahme.
Später irgendwann merkst Du, dass Du da eine|mehrere Vereinsaddresse(n) hast|willst, ...
oder einen Vereinstyp ... usw ...
dann wird der Verein eben ein Object.