- file_get_contents: documentation ( source)
- var_dump: documentation ( source)
- json_decode: documentation ( source)
<?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);