PHP-Objekt, legen Sie mehrere Eigenschaften fest

7

Ist es möglich, mehrere Eigenschaften gleichzeitig für ein Objekt in PHP festzulegen? Anstatt zu tun:

%Vor%

mache etwas wie:

%Vor%

aber ohne das Objekt zu überschreiben .

    
olanod 03.05.2012, 15:46
quelle

7 Antworten

14

Nicht wie du willst. aber das kann mit einer Schleife gemacht werden.

%Vor%

Sehen Sie nur zwei zusätzliche Zeilen.

    
Shiplu Mokaddim 03.05.2012, 15:53
quelle
8

Sie sollten sich objektorientierte Best Practices von PHP ansehen:

"da die Setterfunktionen $ zurückgeben, können Sie sie wie folgt verketten:"

%Vor%

Dies ist übrigens bekannt als eine flüssige Oberfläche .

    
Manos Dilaverakis 03.05.2012 16:04
quelle
4

Ich würde Ihnen empfehlen nicht . Ernsthaft, nicht .

Ihr Code ist auf dem ersten Weg viel sauberer, es ist klarer von Ihren Absichten, und Sie werden Ihren Code nicht in dem Maße verstellen, in dem irgendwann jemand in der Zukunft Ihren Code betrachten und denken würde "Was zur Hölle war der Idiot denken "?

Wenn Sie darauf bestehen, etwas zu tun, was eindeutig der falsche Weg ist, können Sie immer ein Array erstellen, es iterieren und alle Eigenschaften in einer Schleife setzen. Ich werde dir jedoch keinen Code geben. Es ist böse.

    
Madara Uchiha 03.05.2012 15:57
quelle
2

Sie könnten einige Setter für das Objekt schreiben, das das Objekt zurückgibt:

%Vor%

Sie könnten dann tun:

%Vor%

Sie müssten für jede Eigenschaft einen Setter schreiben, da eine __set -Funktion keinen Wert zurückgeben kann.

Alternativ können Sie eine einzelne Funktion festlegen, um ein Array von property = & gt; Werte und alles einstellen?

%Vor%

und übergeben Sie das Array:

%Vor%     
Richard Parnaby-King 03.05.2012 15:58
quelle
0

Ich würde das eigentlich nicht tun .... aber zum Spaß würde ich

%Vor%

Sie erhalten eine stdClass, die aus öffentlichen Eigenschaften von $ objects besteht, so dass sie ihren Typ verliert.

    
goat 03.05.2012 16:11
quelle
0

Methode objectThis() , um Klasseneigenschaften von Klassen oder Klassen in stdClass umzuwandeln. Die Verwendung von Direct Transstyle (Objekt) würde den numerischen Index entfernen, aber mit dieser Methode wird der numerische Index beibehalten.

%Vor%     
Gino 16.02.2014 10:13
quelle
0

Ich verstehe, dass dies eine alte Frage ist, aber zum Nutzen anderer, die darauf stoßen, habe ich das kürzlich selbst gelöst und wollte das Ergebnis teilen

%Vor%

Offensichtlich sind keine Schutzmechanismen eingebaut. Der Hauptvorbehalt ist, dass die Funktion updateObjFromArray davon ausgeht, dass für alle verschachtelten Arrays innerhalb von $array der entsprechende Schlüssel in $obj bereits existiert und ein Objekt ist, dies muss wahr sein oder es wie ein Objekt zu behandeln, wird einen Fehler auslösen.

Hoffe, das hilft! :)

    
taylor8294 08.09.2016 13:18
quelle

Tags und Links