|
|
<?php |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace Eluceo\iCal; |
|
|
|
|
|
class PropertyBag implements \IteratorAggregate |
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
protected $elements = []; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function set($name, $value, $params = []) |
|
|
{ |
|
|
$this->add(new Property($name, $value, $params)); |
|
|
|
|
|
return $this; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function get(string $name) |
|
|
{ |
|
|
if (isset($this->elements[$name])) { |
|
|
return $this->elements[$name]; |
|
|
} |
|
|
|
|
|
return null; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function add(Property $property) |
|
|
{ |
|
|
$name = $property->getName(); |
|
|
|
|
|
if (isset($this->elements[$name])) { |
|
|
throw new \Exception("Property with name '{$name}' already exists"); |
|
|
} |
|
|
|
|
|
$this->elements[$name] = $property; |
|
|
|
|
|
return $this; |
|
|
} |
|
|
|
|
|
#[\ReturnTypeWillChange] |
|
|
public function getIterator() |
|
|
{ |
|
|
return new \ArrayObject($this->elements); |
|
|
} |
|
|
} |
|
|
|