Considering that I keep seeing it, I feel the need to point it out and make a note: This is not OOP. This is a convoluted function call. The names have been changed to protect the guilty.
$newObject = MyObject::createObject(array(
"someStuff" => $datas,
"morestuff" => $moreDatas,
"typo" => $lolTypes,
"theKitchenSink" => KitchenSinkFactory::getInstance()
));
$newObject->doStuff();
$results = $newObject->getResults();
If that is the entirety of the API that one is expected to use from MyObject, then, really, it's just a function call pretending to be an object.