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