56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| ?>
 |