2014-09-18 2 views
0

При изменении значения в объекте я обычно делаю так:Изменение значения для объектов

Объект

Array 
(
    [0] => stdClass Object 
     (
      [created] => 1411033208 
      [title] => test 
      [description] => more test 
     ) 

    [1] => stdClass Object 
     (
      [created] => 1411033208 
      [title] => test2 
      [description] => more test 2 
     ) 

) 

Код

$list = array(); 
foreach ($entries AS $entry) 
{ 
    $entry->created = date('Y-m-d', $entry->created); 
    $list[] = $entry; 
} 

Есть ли более разумный способ ?

+1

Почему вы всегда переназначаете '$ list' текущему элементу? И ваш «объект» - это массив объектов. – Justinas

+0

должен быть $ list [] = $ entry – user4035

+3

Этот вопрос не соответствует теме, потому что речь идет о просмотре кода. – kero

ответ

0

Не нужно хранить список $ или другой массив, вы можете изменить его напрямую. Предполагая, что это то, что вам нужно.

foreach ($entries AS $entry) 
{ 
    $entry->created = date('Y-m-d', $entry->created); 
} 
+0

Я думал, что амперсанд был уменьшен в PHP 5.4 или что-то – Cudos

+1

Поскольку объекты являются ссылками по природе, явная ссылка даже не нужна. – deceze

+1

@Cudos Нет, амперсанд не устарел. * Некоторые конкретные использования * это, но не все в целом. – deceze

-2

Я думаю, что более разумным способом было бы использовать магические методы в вашем классе. Магические методы __get и __set позволят вам назначить свойства объекта в более поздней точке кода.

class GlobalClass{ 
    //Magic Methods 
    public function __set($name, $value){ 
     $this->data[$name] = $value; 
    } 

    public function __get($name){ 
     if (array_key_exists($name, $this->data)) { 
      return $this->data[$name]; 
     } 
    } 
} 

Тогда вы могли бы сделать объект и присвоить любые свойства к нему так:

$gc = new GlobalClass(); 
$gc->myProperty = 'Yaaay'; 

Затем использовать его в дальнейшем как так:

echo $gc->myProperty; 

Надеется, что это имеет смысл!

+0

Нет, это не имеет смысла. Потому что он уже делает это, без необходимости в сеттерах. – deceze

+0

Ну, если он хочет добавить к объекту больше значений, то это применимо. Однако, поскольку он сказал «изменить ценности», вы совершенно правы. – Steve