Простой вопрос, как я преобразовываю ассоциативный массив в переменные в классе? Я знаю, там бросает, чтобы сделать (object) $myarray
или независимо от того, что это, но это создаст новый stdClass и не помогает мне очень. Есть ли любой легкий один или два метода строки для создания каждого $key => $value
пара в моем массиве в a $key = $value
переменная для моего класса? Я не нахожу очень логичным использовать цикл foreach для этого, я был бы более обеспечен просто преобразование его к stdClass и хранению это в переменной, не так ли?
class MyClass {
var $myvar; // I want variables like this, so they can be references as $this->myvar
function __construct($myarray) {
// a function to put my array into variables
}
}
Этот простой код должен работать:
<?php
class MyClass {
public function __construct(Array $properties=array()){
foreach($properties as $key => $value){
$this->{$key} = $value;
}
}
}
?>
Пример использования
$foo = new MyClass(array("hello" => "world"));
$foo->hello // => "world"
В качестве альтернативы, это может быть лучший подход
<?php
class MyClass {
private $_data;
public function __construct(Array $properties=array()){
$this->_data = $properties;
}
// magic methods!
public function __set($property, $value){
return $this->_data[$property] = $value;
}
public function __get($property){
return array_key_exists($property, $this->_data)
? $this->_data[$property]
: null
;
}
}
?>
Использование такое же
// init
$foo = new MyClass(array("hello" => "world"));
$foo->hello; // => "world"
// set: this calls __set()
$foo->invader = "zim";
// get: this calls __get()
$foo->invader; // => "zim"
// attempt to get a data[key] that isn't set
$foo->invalid; // => null