<?php /** * ManiaPlanet dedicated server Xml-RPC client * * @license http://www.gnu.org/licenses/lgpl.html LGPL License 3 */ namespace Maniaplanet\DedicatedServer\Structures; abstract class AbstractStructure { static public function fromArray($array) { if(!is_array($array)) return $array; $object = new static; foreach($array as $key => $value) $object->{lcfirst($key)} = $value; return $object; } static public function fromArrayOfArray($array) { if(!is_array($array)) return $array; $result = array(); foreach($array as $key => $value) $result[$key] = static::fromArray($value); return $result; } static public function getPropertyFromArray($array, $property) { return array_map(get_called_class().'::extractProperty', $array, array_fill(0, count($array), $property)); } static protected function extractProperty($element, $property) { if(!is_a($element, get_called_class()) || !property_exists($element, $property)) throw new \InvalidArgumentException('property '.$property.' does not exists in class: '.get_called_class()); return $element->$property; } function toArray() { $out = array(); foreach(get_object_vars($this) as $key => $value) $out[ucfirst($key)] = $value; return $out; } }