* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace FFMpeg\FFProbe\DataMapping; use FFMpeg\Exception\InvalidArgumentException; abstract class AbstractData implements \Countable { private $properties; public function __construct(array $properties) { $this->properties = $properties; } /** * Returns true if data has property * * @param string $property * @return Boolean */ public function has($property) { return isset($this->properties[$property]); } /** * Returns the property value given its name * * @param string $property * @return mixed * * @throws InvalidArgumentException In case the data does not have the property */ public function get($property) { if (!isset($this->properties[$property])) { throw new InvalidArgumentException(sprintf('Invalid property `%s`.', $property)); } return $this->properties[$property]; } /** * Returns all property names * * @return array */ public function keys() { return array_keys($this->properties); } /** * Returns all properties and their values * * @return array */ public function all() { return $this->properties; } /** * {@inheritdoc} */ public function count() { return count($this->properties); } }