/** * Create and attach entries to a feed * * @param array|Traversable $entries * @param Feed $feed * @return void */ protected static function createEntries($entries, Feed $feed) { if (!is_array($entries) && !$entries instanceof Traversable) { throw new Exception\InvalidArgumentException(sprintf('%s::factory expects the "entries" value to be an array or Traversable; received "%s"', get_called_class(), is_object($entries) ? get_class($entries) : gettype($entries))); } foreach ($entries as $data) { if (!is_array($data) && !$data instanceof Traversable && !$data instanceof Entry) { throw Exception\InvalidArgumentException(sprintf('%s expects an array, Traversable, or Zend\\Feed\\Writer\\Entry argument; received "%s"', __METHOD__, is_object($data) ? get_class($data) : gettype($data))); } // Use case 1: Entry item if ($data instanceof Entry) { $feed->addEntry($data); continue; } // Use case 2: iterate item and populate entry $entry = $feed->createEntry(); foreach ($data as $key => $value) { $key = static::convertKey($key); $method = 'set' . $key; if (!method_exists($entry, $method)) { continue; } $entry->{$method}($value); } $feed->addEntry($entry); } }
protected function normalizeKey($key, array $options) { // if (is_string($key)) { // do nothing // } else if (is_array($key)) { $normalized = []; foreach ($key as $k => $v) { $normalized[] = $k . '=' . $v; } $key = implode('/', $normalized); } elseif (!is_string($key)) { Exception\InvalidArgumentException(sprintf("Cache key option must be either string or array, '%s' passed", gettype($expiration))); } if (isset($options['namespace'])) { return $options['namespace'] . ':' . $key; } return $key; }