Wie andere bereits betont haben, können Sie stdClass verwenden. Ich denke jedoch, dass es ohne () sauberer ist, wie folgt:
$obj = new stdClass;
Basierend auf der Frage scheint es jedoch so, als ob Sie wirklich in der Lage sein möchten, einem Objekt im laufenden Betrieb Eigenschaften hinzuzufügen. Sie müssen dafür keine stdClass verwenden, obwohl Sie dies können. Sie können wirklich jede Klasse verwenden. Erstellen Sie einfach eine Objektinstanz einer beliebigen Klasse und legen Sie die Eigenschaften fest. Ich mag es, meine eigene Klasse zu erstellen, deren Name einfach o ist, mit einigen grundlegenden erweiterten Funktionen, die ich in diesen Fällen gerne verwende, und die sich gut für die Erweiterung von anderen Klassen eignen. Im Grunde ist es meine eigene Basisobjektklasse. Ich möchte auch eine Funktion namens o () haben. Wie so:
class o {
// some custom shared magic, constructor, properties, or methods here
}
function o() {
return new o;
}
Wenn Sie keinen eigenen Basisobjekttyp haben möchten, können Sie einfach o () eine neue stdClass zurückgeben lassen. Ein Vorteil ist, dass o leichter zu merken ist als stdClass und kürzer ist, unabhängig davon, ob Sie es als Klassennamen, Funktionsnamen oder beides verwenden. Selbst wenn Sie keinen Code in Ihrer o-Klasse haben, ist es immer noch einfacher, sich diesen zu merken als die umständlich großgeschriebene und benannte stdClass (die möglicherweise die Idee einer "sexuell übertragbaren Krankheitsklasse" hervorruft). Wenn Sie die Klasse o anpassen, finden Sie möglicherweise eine Verwendung für die Funktion o () anstelle der Konstruktorsyntax. Es ist eine normale Funktion, die einen Wert zurückgibt, der weniger begrenzt ist als ein Konstruktor. Beispielsweise kann ein Funktionsname als Zeichenfolge an eine Funktion übergeben werden, die einen aufrufbaren Parameter akzeptiert. Eine Funktion unterstützt auch die Verkettung. Sie können also Folgendes tun:
Dies ist ein guter Anfang für eine Basis- "Sprache", auf der andere Sprachebenen aufbauen können, wobei die oberste Ebene in vollständig internen DSLs geschrieben wird. Dies ähnelt dem Lisp-Stil der Entwicklung, und PHP unterstützt ihn viel besser, als die meisten Leute glauben. Mir ist klar, dass dies ein bisschen tangential für die Frage ist, aber die Frage berührt, was meiner Meinung nach die Basis für die vollständige Nutzung der Leistung von PHP ist.
$var = (object) (boolean) (string) (int) (array) new StdClass;
Sie wissen, nur um sicher zu gehen.