public function __construct(Url $url) { if (!$url->isComplex()) { throw new RuntimeException("Invalid constructor"); } foreach (get_object_vars($url) as $key => $value) { $this->{$key} = $value; } foreach ($this->parts as $part) { $part->setIndex('$i'); } }