You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
827 B
34 lines
827 B
<?php
|
|
|
|
abstract class ImageCollection extends ArrayIterator
|
|
{
|
|
/**
|
|
* @var string
|
|
*/
|
|
protected $class;
|
|
|
|
/**
|
|
* @param array $data
|
|
* @throws ErrorException
|
|
*/
|
|
public function __construct($data)
|
|
{
|
|
/**
|
|
* @var $class Image
|
|
*/
|
|
$class = $this->class;
|
|
Image::checkSubClass($class);
|
|
if (is_null($data) || $data == '') {
|
|
throw new ErrorException('Empty data.');
|
|
}
|
|
if (!is_array($data)) {
|
|
$data = json_decode($data, true);
|
|
if (json_last_error() != JSON_ERROR_NONE) {
|
|
throw new ErrorException('Unable to convert json-string to array.');
|
|
}
|
|
}
|
|
foreach ($data as $item_data) {
|
|
$this->append($class::getInstance($item_data));
|
|
}
|
|
}
|
|
}
|