<?php namespace eMacros\Runtime\Collection;
use eMacros\Runtime\GenericFunction;
class Car extends GenericFunction { /** * Returns the head element on a list * Usage: (Array:car (array 1 2 3)) * Returns: mixed * (non-PHPdoc) * @see \eMacros\Runtime\GenericFunction::execute() */ public function execute(array $arguments) { if (empty($arguments)) { throw new \BadFunctionCallException("Car: No parameters found."); } list($list) = $arguments; if ($list instanceof \Iterator) { $list->rewind(); $value = $list->valid() ? $list->current() : null; } elseif ($list instanceof \IteratorAggregate) { $iter = $list->getIterator(); $iter->rewind(); $value = $iter->valid() ? $iter->current() : null; } elseif (is_array($list)) { $value = !empty($list) ? array_shift($list) : null; } elseif ($list instanceof \ArrayAccess) { //cannot ensure which is the first element, return index 0 $value = isset($list[0]) ? $list[0] : null; } else { throw new \InvalidArgumentException('Car: Parameter is not a list.'); } return $value; } }
|