Tach!
Der Nachteil ist ganz klar die Wortfülle der Implementierung. Der Vorteil ist die einfache Handhabung für den Nutzer.
$pdo = (new PdoBuilder()) ->withUsername($username) ->withPassword($password) ->withDsn($dsn) ->withOptions($options) ->create();
Du machst das natürlich gleich wieder in ganz hübsch. Das ist in der Tat eine sehr einfache Handhabung, besonders dann, wenn man Autovervollständigung (mit CamelHumps) hat. Ohne diese wäre es auch noch recht viel Tipparbeit im Verhältnis zu einfachen Funktionsparametern. Für meine eigenen Kreationen hab ich sowas noch nicht aufgesetzt, weil es für mich persönlich aufwendiger und meist weniger von Nutzen ist. Für ein Framework, dass sich womöglich an eine breite Masse wendet, mag die Kosten-Nutzen-Rechnung wieder ganz anders aussehen.
Ein Nachteil ist mir aber grad noch eingefallen. Fehlende Pflichtparameter merkt man erst zur Laufzeit, wenn sich die create()-Methode beschwert.
dedlfix.