Tach!
Was ist daran schrecklich?
Das ich eine Variable, die ich verändere, nicht auf der linken Seite stehen habe.
Auf welcher Seite steht denn die Eigenschaft (von außen betrachtet), die Du mit der Methode
$c->set_color(#200);
ansprichst. Richtig! Die sieht Du gar nicht! Wie die Klasse das macht, interessiert nicht.
Es geht im vorliegenden Fall um eine nicht zur Klasse gehörende Variable - genauer, eine Funktion ändert/erzeugt eine Variable. Da die gesamte Aufgabenstellung nicht bekannt ist, können wir keinen realistischen Vorschlag bringen, wie man diese mit der OOP lösen würde, also ob mit einem gut durchdachten Design überhaupt ein "außenliegendes" Ergebnis benötigt wird oder ob die Klase selbst das Array verwalten kann und selbiges gar nicht öffentlich wird.
Das Zurückgeben eines "Arrays" ist aber auch nicht der Standard bei Programmiersprachen und schon gar nicht, eines unspezifizierten.
In Compilersprachen auch objektorientierten hat man noch genügend Anwendungsfälle, bei denen ein unspezifiziertes Object zurückgegeben wird, das man sich erst noch typecasten muss. Die Fälle werden durch diverse Maßnahmen wie Generics weniger, aber sie sterben nicht aus. Die Rückgabe von Arrays ist auch keine Seltenheit. Du meinst sicherlich Arrays mit gemischtem Inhalt. Die wird man wohl eher vermeiden wollen und sich stattdessen für das Ergebnis eine Klasse mit den benötigten Eigenschaften erstellen. Oder aber man signalisiert unerwartete Status während der Verarbeitung mit Exceptions.
dedlfix.