Udržet to čistě objektově = použít tupý objekt pro předávání dat.
class ReturnValueDTO {
public $value1;
public $value2;
public $value3;
...
public __construct($value1, $value2, $value3 ...) {
$this->value1 = $value1;
...
}
}
kde $value1 (atd.) by samozřejmě měly být smysluplně pojmenovány a vyplatí k nim hodit i PHPDoc type-hinty. Asociativní pole funguje samozřejmě taky, ale tímto docílíš přesného kontraktu, kde ihned jak Ty, tak Tvoje IDE vidí, co metoda vrací. Samozřejmě se to dá použít i na vstupní parametry - pokud je jich řekněme víc jak 5, zabalit je do samostatného objektu je lepší volba.
Ostatní věci, co psal Kozzi, samozřejmě budou fungovat taky. Tohle je IMHO nejlepší cesta (a nejen v PHP, platí to obecně pro objektové jazyky nebo procedurální jazyky, které podporují struktury - v práci to používáme skoro furt na C/C++/C#).