как печатать динамические свойства добавления в следующем классе?
class Car { function __construct() { } function setInfo($car_arr) { foreach ($car_arr as $key => $value) { $this->{$key} = $value; } } }
установить объект класса, например, ниже
$car1 = new Car(); $car1->setInfo(array('make' => 'Toyota', 'model' => 'scp10')); $car2 = new Car(); $car2->setInfo(array('anme1' => 'value1', 'anme2' => 'value2'));
теперь я хочу напечатать ремень автомобиля
make = Toyota model = scp10
Пытаться :
$car1 = new Car(); $car1->setInfo(array('make' => 'Toyota', 'model' => 'scp10')); echo $car1->make; echo $car1->model;
<?php class Car { function __construct() { } function setInfo($car_arr) { foreach ($car_arr as $key => $value) { $this->{$key} = $value; } } } $car1 = new Car(); $car1->setInfo(array('make' => 'Toyota', 'model' => 'scp10')); echo "Make value is : " . $car1->make. ", Model value is : ". $car1->model; ?>
выше выходного кода Make value is : Toyota, Model value is : scp10
Пожалуйста, подумайте о сохранении свойств в явном виде, как я указал в этом ответе :
<?php class Car { private $data = array(); function setInfo(array $carInfo) { foreach ($carInfo as $k => $v) { $this->data[$k] = $v; } return $this; } function __set($key, $val) { $this->data[$key] = $val; } function __get($key) { return $this->data[$key]; } } $car = new Car(); $car->setInfo(array('make' => 'Toyota', 'warranty' => '5 years'));
Я считаю это более «чистым», но это, вероятно, спорно.
Я думаю, что вы ищете что-то вроде этого PHP Magic Methods
Например, это:
<?php class A { public $var1; public $var2; public static function __set_state($an_array) // As of PHP 5.1.0 { $obj = new A; $obj->var1 = $an_array['var1']; $obj->var2 = $an_array['var2']; return $obj; } } $a = new A; $a->var1 = 5; $a->var2 = 'foo'; eval('$b = ' . var_export($a, true) . ';'); // $b = A::__set_state(array( // 'var1' => 5, // 'var2' => 'foo', // )); var_dump($b); ?>
Это тоже будет полезно.
Вы можете получить все свойства, используя get_object_vars ():
$vars = get_object_vars($car1); foreach ($vars as $key => $value) { echo $key . ' = ' . $value . '<br />'; }