1<?php 2 3namespace Sirius\Validation\DataWrapper; 4 5use Sirius\Validation\Util\Arr; 6use Sirius\Validation\DataWrapper\WrapperInterface; 7 8class ArrayWrapper implements WrapperInterface 9{ 10 11 /** 12 * @var array 13 */ 14 protected $data = array(); 15 16 /** 17 * @param array $data 18 */ 19 public function __construct($data = array()) 20 { 21 $this->setData($data); 22 } 23 24 /** 25 * @param array|\ArrayObject|object $data 26 * @throws \InvalidArgumentException 27 */ 28 public function setData($data) 29 { 30 if (is_object($data)) { 31 if ($data instanceof \ArrayObject) { 32 $data = $data->getArrayCopy(); 33 } elseif (method_exists($data, 'toArray')) { 34 $data = $data->toArray(); 35 } 36 } 37 if (!is_array($data)) { 38 throw new \InvalidArgumentException('Data passed to validator is not an array or an ArrayObject'); 39 } 40 $this->data = $data; 41 return; 42 } 43 44 public function getItemValue($item) 45 { 46 return Arr::getByPath($this->data, $item); 47 } 48 49 public function getItemsBySelector($selector) 50 { 51 return Arr::getBySelector($this->data, $selector); 52 } 53 54} 55