Hallo MB,
man definiert normalerweise dann eigene Datentypen, wenn die verwendeten Daten tatsächlich zusammengehören und als diese Einheit auch verwendet werden. In dem Fall erstellst Du eine Klasse und der Frameworknutzer verwendet sie.
Einen Typ (eine Klasse) zu definieren, um die Parameter für einen Konstruktor zu einem zu bündeln, macht IMO wenig Sinn. Da hilft Dir normalerweise deine IDE und die eingebrachten PHPDOC Kommentare dabei weiter, die Parameter in der richtigen Reihenfolge zu übergeben. Benannte Argumente existieren in PHP nach wie vor nur als RFC, insofern kannst Du deinen Nutzern keine freie Reihenfolge bei der Argumentübergabe anbieten (d.h. du kannst schon, mit assoziativen Arrays, das ist aber arg fragil).
Es kann SCHON Sinn machen, einen Konstruktor so aufzubauen, dass er Objekte als Parameter erwartet. Das macht man dann aber eher wegen der Funktionalität dieser Objekte und nennt es Dependency Injection, d.h. Du lieferst einer Klasse Bausteine mit, die sie für ihre Funktion verwenden soll und die ein bestimmtes Interface implementieren. Zum Beispiel einen Database-Accessor, der wahlweise PDO, Oracle oder MongoDB anspricht. Oder einen Logger, der wahlweise alles raushaut oder alles wegschmeißt.
Rolf
Dosen sind silbern