You are currently browsing Pablo Dall'Oglio’s articles.
Palavras-chave: PHP, INI, configuração, parsing
Arquivos .INI são comumente utilizados para armazenar informações sobre a configuração das aplicações. Caminhos de diretórios, caminhos de programas externos, usuários, senhas, dentre outros.
Em aplicações PHP é extremamente simples realizar a leitura de arquivos INI. Para isto existe a função parse_ini_file(). Ela lê o INI e retorna um array multidimensional (matriz) indexado pela chave de cada linha. Inclusive, se o arquivo INI tiver seções, estas seções poderão ser utilizadas como chaves deste array. Veja:
arquivo INI:
==============
; Exemplo de arquivo .INI
; Isto é um comentário
[paths]
app=/usr/local/programa
temp=/tmp
[layout]
cor=vermelho
fonte=arial
tamanho=12
arquivo PHP:
==============
<?php
// primeiro vamos realizar a leitura
// simples do INI, cada chave é transformada
// em um índice do array unidimensional
$ini = parse_ini_file('config.ini');
print $ini['temp'] . "<br>";
print $ini['fonte'] . "<br>";
// agora iremos respeitar a hierarquia das
// seções do INI. O segundo parâmetro faz
// com que as seções sejam as chaves de acesso
// para este array multi-dimensional
$ini = parse_ini_file('config.ini', true);
print $ini['paths']['temp'] . "<br>";
print $ini['layout']['fonte'] . "<br>";
?>
Palavras-chave: PHP, enviar, e-mail, email, gmail, evolution
Uma das coisas mais chatas em PHP é enviar email. Não por causa do PHP, mas porque cada software cliente de email trata os headers de uma maneira diferente.
Passei uma madrugada dessas quebrando a cabeça, porque os emails funcionavam no Evolution, mas não no Gmail. Depois funcionavam no Gmail, mas não no Evolution. Quando consegui fazer funcionar nos dois, empacotei tudo numa classe.
E aí está, para ajudar outros a não quebrarem a cabeça :-)
<?php
/*
* Classe Mail
* para envio de emails
*/
class Mail
{
private $parts;
/*
* Método construtor
*/
function __construct()
{
$this->parts = array();
$this->boundary = md5(time());
}
/*
* Adiciona HTML
*/
function addHtml($body)
{
$body = stripslashes($body);
$msg = "--{$this->mime_boundary}\\n";
$msg .= "Content-Type: text/html; charset=ISO-8859-1\\n\\n";
$msg .= $body;
$this->parts[] = $msg;
}
/*
* Adiciona Texto
*/
function addText($body)
{
$body = stripslashes($body);
$msg = "--{$this->mime_boundary}\\n";
$msg .= "Content-Type: text/plain; charset=ISO-8859-1\\n\\n";
$msg .= $body;
$this->parts[] = $msg;
}
/*
* Adiciona Imagem
*/
function addPng($filename, $download)
{
$fd=fopen($filename, 'rb');
$contents=fread($fd, filesize($filename));
$contents=chunk_split(base64_encode($contents),68,"\\n");
fclose($fd);
$msg = "--{$this->mime_boundary}\\n";
$msg .= "Content-Type: image/png; name={$download}\\n";
$msg .= "Content-Transfer-Encoding: base64\\n";
$msg .= "Content-Disposition: attachment; filename={$download}\\n\\n";
$msg .= "{$contents}";
$this->parts[] = $msg;
}
/*
* Envia Email
*/
function send($from, $to, $subject)
{
$headers = "From: {$from}\\n";
$headers .= 'Content-Type: multipart/mixed; boundary="'.$this->mime_boundary."\"\\n";
$headers .= 'X-Mailer: PHP-' . phpversion() . "\\n";
$headers .= "Mime-Version: 1.0\\n\\n";
$msg = implode("\\n", $this->parts);
mail($to, $subject, $msg, $headers);
}
}
?>
Palavras-chave: PHP, vetor, array, objeto, index
Este trecho de código abaixo é muito útil pois é um modelo de como converter vetores (arrays) em objetos no PHP.
O funcionamento é bastante simples, ele pega um array indexado e o converte em um objeto onde os índices do array serão os nomes das propriedades dos objetos, e o valor do array naquela posição (índice), será o valor da propriedade. O segredo todo está no foreach ;-)
<?php
$a['cor'] = 'azul';
$a['potencia'] = '1000';
$a['marca'] = 'fiat';
$a['modelo'] = 'palio';
foreach ($a as $key => $value)
{
$objeto->$key = $value;
}
echo $objeto->cor;
echo $objeto->potencia;
echo $objeto->marca;
echo $objeto->modelo;
?>
Palavras-chave: PHP, thumbnail, Imagens, GD
A grande maioria dos sites precisa gerar algum tipo de thumbnail ou pré-visualização em miniatura a partir de uma foto submetida ou de uma screenshot.
Abaixo segue uma pequena função em PHP que recebe uma imagem e gera outra, com a nova largura especificada, a altura é automaticamente calculada para manter a proporção em relação à imagem original. A imagem é redimensionada mantendo-se a qualidade de 100% (válido especialmente para o formato JPEG).
/*
* Método geraThumb
* Gera thumbnail a partir da foto
*/
function geraThumb($photo, $output, $new_width)
{
$source = imagecreatefromstring(file_get_contents($photo));
list($width, $height) = getimagesize($photo);
if ($width>$new_width)
{
$new_height = ($new_width/$width) * $height;
$thumb = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($thumb, $source, 0, 0, 0, 0,
$new_width, $new_height, $width, $height);
imagejpeg($thumb, $output, 100);
}
else
{
copy($photo, $output);
}
}
?>







Comentários Recentes