code: public function format($format)
      {
          $formato_br = 'br';
          $formato_br_extenso = 'br\\_extenso';
  
          if (
                  preg_match("/{$formato_br}/", $format) == 0 ||
                  preg_match("/\\\\{$formato_br}/", $format) == 1
          ) {
              return parent::format($format);
          } else if (preg_match("/{$formato_br_extenso}/", $format)) {
              setlocale(LC_ALL, "pt_BR", "pt_BR.iso-8859-1", "pt_BR.utf-8", "portuguese");
              date_default_timezone_set('America/Sao_Paulo');
              return preg_replace(
                      "/{$formato_br_extenso}/", strftime('%d de %B de %Y', $this->getTimestamp()), $format
              );
          } else {
              return parent::format('d/m/Y');
          }
      }
docs: Estende  a função DateTime::format() adicionando dois novos formatos:
  - 'br' imprime a data no formato "d/m/Y"
  - 'br_extenso' imprime a data no formato "1 de abril de 2015" (ABNT NBR 5892)
  Demais casos serão passados para a função original
  @param string $format