3v4l.org

run code in 300+ PHP versions simultaneously
<?php interface Produto { public function getNome(): string; public function setValor(float $valor); } class SmartphoneImportado implements Produto { private float $valor; public function getNome(): string { return "Smartphone Importado XPTO"; } public function setValor(float $valor) { $this->valor = $valor; } } abstract class ProdutoFactory { public abstract function criarProduto(): Produto; public function get(): Produto { return $this->criarProduto(); } } class SmartphoneImportadoFactory extends ProdutoFactory { private const URI_API = 'https://api.exchangeratesapi.io/latest?base=USD&symbols=BRL'; public function criarProduto(): \Produto { $cotacao_json = json_decode(file_get_contents(self::URI_API)); $cotacao = $cotacao_json->rates->BRL; $produto = new SmartphoneImportado(); $produto->setValor($cotacao * 100); return $produto; } } $factory = new SmartphoneImportadoFactory(); $produto = $factory->criarProduto(); var_dump($produto);

preferences:
48.16 ms | 402 KiB | 5 Q