3v4l.org

run code in 500+ PHP versions simultaneously
<?php interface BuilderObject { public function start(array $array): BuilderObject; public function addString(array $array): BuilderObject; public function end(string $str): BuilderObject; public function getData(): string; } class BuilderHtml implements BuilderObject { private string $data; public function start(array $array): BuilderObject { foreach ($array as $key => $value) { $this->data = $this->parseData($key, $value); } return $this; } private function parseData(string $key, array $value): string { $body = '<' . $key . ' '; foreach ($value as $k => $v) { $body .= $k . '="' . $v . '" '; } $body .= ">"; return $body; } public function addString(array $array): BuilderObject { foreach ($array as $key => $value) { $this->data = $this->parseData($key, $value); } return $this; } public function end(string $str): BuilderObject { $this->data .= $str; return $this; } public function getData(): string { return $this->data; } } $builderHtml = new BuilderHtml(); $resultHtml = $builderHtml->start(['form' => ['action' => 'actice.php', 'method' => 'GET']]) ->addString(['input' => ['type' => 'text', 'name' => 'name', 'value' => 'default']]) ->addString(['input' => ['type' => 'hidden', 'name' => 'id', 'value' => 1]]) ->addString(['input' => ['type' => 'date', 'name' => 'date_start', 'value' => date("Y-m-d")]]) ->end('</form>'); var_dump($resultHtml->getData());

preferences:
49.66 ms | 738 KiB | 5 Q