2010-12-06 7 views
0

Nicht sehr gut, diese Frage in Worte zu setzen ....OOP PHP: Wie weise ich einen Variablenwert zu?

Ich bin eine API mit

$customer =    new Customer(); 
$customer->first_name = $value; 
$customer->update(); 

Die oben einige Kundendaten zu aktualisieren, würde die first_name aktualisieren, jedoch würde Ich mag an Variable, deren Vorname wie lautet:

$attribute =    'first_name';  
$customer =     new Customer(); 
$customer->$attribute =  $value; 
$customer->update();` 

Welche würden dann die öffentlichen vars in der Customer-Klasse verweisen.

Ich möchte vermeiden, eine Methode (Setter) für jedes Attribut zu schreiben.

+3

haben Sie das oben genannte versucht? Wie funktioniert es? Wenn ja, was ist die Frage? – Gordon

+0

$ Kunde -> {$ Attribut} = $ Wert; –

+1

Ihr Problem ist wahrscheinlich der Tippfehler '$ attrubute'. –

Antwort

2

Sowohl $obj->$attr und $obj->{$attr} wird in der gleichen Art und Weise arbeiten. Die {} sind in diesem Fall redundant. Sie machen Sinn, wenn Sie etwas wie $obj->{"123"} schreiben müssen.

<?php 
$obj = new stdClass(); 
$attr = 'my_attr'; 
$obj->$attr = 'test'; 
var_dump($obj); 
?> 

Das Problem mit Ihrem Code ist, dass Sie einen Tippfehler haben. Oder wenn der Tippfehler nur im Text der Frage war, dann hast du kein Problem.

+0

Cool diese beide arbeiten, in welchen Fällen wäre die Zahnspange geeignet? Arrays? – Haroldo

+1

@Haroldo Wenn Unklarheit besteht oder wenn die Syntax nicht erlaubt ist. Ex. '$ obj -> {$ arr [3]}' anstelle von '$ obj -> $ arr [3]' oder '$ obj -> {" 123 "}' anstelle von '$ obj-> 123'. –

0

Sie können es tun, wie

$attr = 'my_attr'; 
$obj->{$attr}; 
+1

tatsächlich funktioniert es auch ohne Klammern – Fluffy