Chyba chodzi ci o przeciążenie a nie przeładowanie
Jak już pewnie wiesz w php nie da się tego zrobić po ludzku i trzeba się uciec do kombinowania, które zazwyczaj psuje czytelność kodu.
Ja osobiście w większości takich przypadków używam osobnej meteody/metod statycznych, które są odpowiedzialne za tworzenie obiektu. Sam konstruktor zawsze przyjmuje określone parametry - najczęściej tablicę asocjacyjną. Oprócz tego istnieje osobna klasa z metodami static, która odpowiednio inicjuje obiekt w zależności od potrzeb czyli np. mam klasę produkt z konstruktorem
<?php
__construct($paramsArray)
?>
a do tego osobną klasę z metodami static takimi jak np:
<?php
public static function getById
($intId) {
//np. odczytanie parametrów z bazy i wywolanie konstruktora
}
?>
itd itp.
Nie wiem czy tak jest poprawnie, ale wydaje mi się to najbardziej przejrzystą metodą, która pozwala na łatwe rozszerzanie, gdyby w przyszłości okazało się, że potrzebuję innego sposobu na wywołanie obiektu.
Oczywiście ten schemat stosuję tylko w wypadku skomplikowanych obiektów. W przypadku, gdy jest jakiś prosty obiekt i 2 warianty jego tworzenia - tj. z bazy lub z tablicy, stosuje coś jak ActiveRecord. Stworzyłem takie małe rozwiązanie oparte o ZF, gdzie mogę szybko definiować obiekty wskazując ich pola, i potem inicjować je przekazując listę wartości tych pól lub rekord odczytany z bazy.