У меня есть массив, как показано ниже —
$xml= array(
'name'=> 'Arun',
'roll' => '12345',
'id' => '1'
);
Я хочу, чтобы это было преобразовано в определяемый пользователем объект [Не stdClass, ни SimpleXMLObject]
Я хочу что-то вроде ниже —
UserDefinedObject Object
(
[name] => Arun
[roll] => 12345
[id] => 1
)
Я сделал что-то вроде Белу, что дает мне stdClass Object, но мне нужно, чтобы это было UserDefined —
public static function convert($xml)
{
//$array = new ConvertArrayToXML($xml);
//return $array;
//return((Object)$xml);
foreach($xml as $key => $value)
{
if(is_array($value))
{
$array[$key] = self::convert($value);
}
}
return (object)$xml;
}
Я знаю, что это может звучать очень глупо, но я очень плохо знаком с пользовательскими объектами в php.
Пожалуйста, дайте несколько советов по этому вопросу.
Благодарю.
$xml = [
'name'=> 'Arun',
'roll' => '12345',
'id' => '1',
];
class UserDefinedObject { }
$myObj = new UserDefinedObject();
foreach($xml as $key => $value) {
$myObj->{$key} = $value;
}
var_dump($myObj);
РЕДАКТИРОВАТЬ
или небольшой вариант:
$myObj = new UserDefinedObject();
array_walk($xml,
function($value, $key) use ($myObj) {
$myObj->{$key} = $value;
}
);
class UserDefinedClass {
public $name;
public $roll;
public $id;
function __construct($name,$roll,$id){
$this->name = $name;
$this->roll = $roll;
$this->id = $id;
}
}
$xml= array(
'name'=> 'Arun',
'roll' => '12345',
'id' => '1'
);$obj = new UserDefinedClass($xml['name'],$xml['roll'],$xml['id']);
// you can use and foreach for dynamic elements.
print_r($obj);
$ xml = array (‘name’ => ‘Arun’, ‘roll’ => ‘12345’, ‘id’ => ‘1’);
class UserDefined {
public $name;
public $roll;
public $id;
function __construct($xml) {
$this->name = $xml['name'];
$this->roll = $xml['roll'];
$this->id = $xml['id'];
}
}
print_r (новый UserDefined ($ xml));