Convertendo DateInterval para Extenso.

Estava hoje mais uma vez programando, refatorando um código antigo que tenho em produção. E estou começando utilizar DateTime e DateInterval para minhas datas ( No meu código legado estão sendo tratadas como string do jeito que vem do mysql ). Para isso precisei exibir um DateInterval por extenso para descrever um periodo dentro do sistema.

Fiz da seguinte maneira:

function formatarIntervaloDeData(\DateInterval $dti){
    $legenda = array(
        "y" => ["Ano","Anos",","],
        "m" => ["Mese","Meses",","],
        "d" => ["Dia","Dias",","],
        "h" => ["Hora","Horas",","],
        "m" => ["Minuto","Minutos",","],
        "s" => ["Segundo","Segundos","e"]
    );

    $txt = "";

    foreach(legenda as $key => $val){
        list($sing,$plural, $sep) = $val;
        if($dti->$key > 0){
            $txt .= ($txt?"$sep ":"") . $dti->$key . " " . ($dti->$key==1?$sing:$plural) . " ";
        }
    }

    return $txt;
}


E o resultado fica assim:

48 Segundos
23 Dias , 19 Horas e 1 Segundo
1 Minuto , 15 Dias , 15 Horas e 8 Segundos

e por ai vai.

PHP CURL: 417 – Expectation Failed

PHP CURL

Olá  todos, durante o desenvolvimento de uma de minhas aplicações web, me encontrei fazendo o envio de algumas informações para um web service através do módulo do curl do php. Estive obtendo o seguinte erro:

417 - Expectation Failed

Depois de alguma pesquisa na internet, não encontrei a explicação exata do porque isto acontece, mas pude achar um workaround. Ao adicionar o seguinte código:

curl_setopt($ch,CURLOPT_HTTPHEADER,array("Expect:  "));

O Curl foi capaz de efetuar o envio das informações de maneira correta.

Continue lendo “PHP CURL: 417 – Expectation Failed”