Get array functions work on ArrayObject
Eine Erweiterung der ArrayObject Klasse, um array_* Funktionen mit dem ArrayObject anwenden zu können. Die meisten Array Funktionen beginnend mit array_* werden abgedeckt. Für andere Array Funktionen, wie z.B. in_array() wurden Methoden geschrieben, die diese Funktionen abbilden. Die Klasse ist im Umfang der Array Funktionen nicht komplett.
<br/>
<br/>
@example
<br/>
$myArrayObject = new ArrayObject(['eins', 'zwo', 'drei']);
<br/>
$result = $myArrayObject->has('eins'); // returns true
<br/>
$myArrayObject->array_flip(); // returns ['drei', 'zwo', 'eins']
// namespace
namespace MMNewmedia\Util;
/**
* Diese Klasse erweitert die ArrayObject Klasse aus der SPL um
* sinnvolle array_* Methoden, die so nicht im ursprünglichen ArrayObject
* Umfang enthalten sind
*
* @author Marcel Maaß <info@mm-newmedia.de>
* @copyright MM Newmedia <http://www.mm-newmedia.de>
* @package de.mmnewmedia.framework
* @subpackage util
* @since 2013-12-11
* @version
*/
class ArrayObject extends \ArrayObject {
/**
* Setzt einen euen Wert für den übergebenen Index
* Ist der neue Wert ein Array, wird das Array automatisch in ein ArrayObject gewandelt
*
* @param mixed $index Der Index, der gesetzt werden soll
* @param mixed $value Der neue Wert für den übergebenen Index
*/
public function offsetSet($index, $value) {
parent::offsetSet($index, is_array($value) ? new ArrayObject($value) : $value);
}
/**
* Ermöglicht die Nutzung von PHP Array Funktionen mit der ArrayObject Klasse
*
* @param string $func Name der Funktion
* @param array $arg Argumente für die aufzurufende Funktion
* @throws BadMethodCallException
* @return mixed
*/
public function __call($func, $arg) {
if ( (!is_callable([$this, $func]) && !is_callable($func) ) || substr($func, 0, 6) !== 'array_') {
throw new \BadMethodCallException(__CLASS__ . '->' . $func);
}
return call_user_func_array($func, array_merge([$this->getArrayCopy()], $arg));
}
/**
* Fügt ein Array an der übergebenen Position dieses Arrays ein
*
* @param array $src
* @param integer $pos
* @return mixed
*/
public function array_insert($src, $pos) {
if (!is_array($src) || $pos <= 0) {
return false;
}
return array_merge($this->array_slice(0, $pos), [$src], $this->array_slice($post));
}
/**
* Emuliert die in_array Funktion für das ArrayObject
*
* @param string $value
* @return boolean
*/
public function has($value) {
return in_array($value, (array) $this);
}
}
Url: http://www.mm-newmedia.de
Language: PHP | User: ezkimo | Created: Oct 18, 2014 | Tags: php ArrayObject array functions oop