for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Chrisyue\PhpM3u8\Parser;
use Chrisyue\PhpM3u8\Definition\TagDefinition;
class DataBuilder
{
private $currentUriAware;
private $result;
public function __construct()
$this->result = new \ArrayObject();
}
public function addUri($uri)
if (null === $this->currentUriAware) {
throw new DataBuildingException('uri found, but doesn\'t know how to handle it');
$this->currentUriAware['uri'] = $uri;
$this->currentUriAware = null;
public function addTag(TagDefinition $definition, $data)
$parent = $this->result;
if ('media-segment' === $definition->getCategory()) {
$this->currentUriAware = new \ArrayObject();
$this->result['mediaSegments'][] = $this->currentUriAware;
} elseif ($definition->isUriAware()) {
$this->currentUriAware = $data;
$parent = $this->currentUriAware;
if ($definition->isMultiple()) {
$parent[$definition->getProperty()][] = $data;
return;
$parent[$definition->getProperty()] = $data;
public function getResult()
return $this->result;