Ich gehe davon weg, Arrays in PHP zu verwenden, weil Objekte so viel sauberer sind, und in PHP 5 gibt es keine Performance-Hits, wenn Objekte verwendet werden.
Zurzeit mache ich es so:
$object = (object) array('this' => 'that', 'foo' => (object) array('bar' => 123));
Allerdings finde ich es so mühsam, jedes Mal tippen zu müssen, wenn Typumwandlung nicht rekursiv ist ...
Gibt es irgendeinen Weg in php (oder wird es sein), es so oder ähnlich zu machen:
%Vor%Ab PHP 5.4 ist die Kurz-Array-Syntax verfügbar. So können Sie ein Array wie folgt initialisieren:
%Vor%Es gibt keine kurze Objekt-Syntax in PHP ab PHP7. Sie können jedoch kurze Arraysyntax verwenden, um Objekte wie folgt zu erstellen:
%Vor%Sieht viel schöner und kürzer aus als das folgende Konstrukt:
%Vor%Ich empfehle Ihnen, eine Funktionsbreite StdClass zu erstellen.
%Vor%PHP unterstützt derzeit keine kurze Objektsyntax. Ab PHP 5.4 unterstützen sie kurze Arraysyntax. Vielleicht wird 5,5 enthalten, was Sie suchen.
Als Alternative:
Sie könnten Ihre Objekte als JSON erstellen und json_decode()
verwenden:
Hinweis: Ich zeige dies nur als Demonstration einer Möglichkeit, Ihre Frage zu lösen. Ich befürworte keine solche Praxis.
Leider gibt es keine Syntax, die stdClass
Instanzen wie diese erzeugt. Aber Sie könnten das Schlüsselwort new
und eine beliebige der Spl-Klassen verwenden (nicht viel aufgeräumter ich zugeben). Wenn Sie für Tastenanschläge optimieren möchten, könnten Sie eine kleine Hilfsfunktion wie folgt schreiben:
und schreibe
%Vor% Obwohl ich ehrlich gesagt nicht verstehen kann, warum Sie das tun sollten ( assoziative Arrays sind im Wesentlichen reine Datenobjekte ), aber wenn Sie darauf bestehen:
Statt jeden einzelnen zu werfen Array, auf jeder einzelnen Ebene zu einem Objekt, können Sie den folgenden "trick / hack" verwenden :
Dies konvertiert alle Arrays in Instanzen von stdClass
, was ich glaube, was Sie wollten.
Ich muss noch einmal sagen: PHP ist nicht JavaScript und Objekte sind in Sprachen wie PHP viel teurer (relativ gesehen), dann sind sie in JS. Ich würde dringend empfehlen, dass Sie mit assoziativen Arrays bleiben, wenn Sie kein Objekt benötigen.
Wie Objekte können Arrays function foo (array $argument){}
Wenn Sie sie wirklich in eine bestimmte Instanz einer Klasse umwandeln möchten, ändern Sie den -Konstruktor , um mit einem Array zu arbeiten:
Und fügen Sie weitere Methoden hinzu, die Sie dem Los hinzufügen möchten
Ich habe eine alternative Lösung, wenn Sie ein bereits gebautes Array erhalten. Nehmen wir an, Ihr Array enthält n verschachtelte Arrays, sodass Sie keine Chance haben, jedes auf einfache Weise zu implementieren. Dies würde den Trick tun:
%Vor%Ich würde das nicht in einer großen Schleife oder etwas Ähnlichem verwenden, da es viel langsamer ist, als nur mit dem Array sintax zu kleben und damit zu leben. Auch wenn ein Element des Arrays eine Funktion oder ein anderes lustiges Ding ist, würde dies das brechen.
Beispielverwendung:
%Vor%Tags und Links javascript arrays php syntax object