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) { var_dump($this->parseData($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());
Output for 8.2.31, 8.3.0 - 8.3.31, 8.4.1 - 8.4.21, 8.5.0 - 8.5.6
string(40) "<form action="actice.php" method="GET" >" Fatal error: Uncaught Error: Typed property BuilderHtml::$data must not be accessed before initialization in /in/UAJNX:22 Stack trace: #0 /in/UAJNX(58): BuilderHtml->start(Array) #1 {main} thrown in /in/UAJNX on line 22
Process exited with code 255.

preferences:
42.42 ms | 751 KiB | 4 Q