Removendo acentos de maneira simples em PHP

O php tem uma função chamada strtr que é uma mão na roda para resolver problemas de tirar acentos, o único incoveniente é que os caracteres com acentos devem ser pre configurados …

function removeAcentos($string){
$return = strtr ($string, "ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ", "SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy");
return $return;
}

Fácil não ?
Quem deu a “pala” foi o DGmike

Array de Objetos, função para substituir o array_diff

Tem uma coisa em JAVA que eu gosto muito, sao os ArrayList, nada mais é que arrays, porem tem muito mais métodos do que o convencional, o PHP também possui muitos métodos para array, porém o array_diff não funciona bem com array de objetos, e é interessante vc ter um array de objetos… mas enfim para contornar isso criei uma função !

Notem ele pega valores do array de objetos 1 que nao estao no array 2

/**
* $var = o atributo para comparar
*/

 function diff ($var,$array1,$array2){
 $ar_tmp1 = array();//Array temporário para trabalhar com array1
 $ar_tmp2 = array();//Array temporário para trabalhar com array2
 $ar_tmp3 = array();//Array para guardar as keys diferentes
 $ar_return = array();//Array que recoloca os objetos e retorna
 /**
  * Guardando no $ar_tmp1 os valores das keys
  * poderia usar o foreach também, mas uso o for
  * para ficar mais claro as minhas intenções
  */
 for ($i = 0;$i < count($array1);$i++){
  $ar_tmp1&#91;$i&#93; = $array1&#91;$i&#93;->$var;
 }
 /**
  * Guardando no $ar_tmp1 os valores das keys
  */
 for ($i = 0;$i <count ($array2);$i++){
  $ar_tmp2&#91;$i&#93; = $array2&#91;$i&#93;->$var;
 }
 /**
  * A mágica acontence aqui, usamos o array_values para zerar os indices
  * e depois usamos o array_diff que compara as keys, ou seja, valores do $ar_tmp1 que nao
  * estao presente no $ar_tmp2
  */
 $ar_tmp3 = array_values(array_diff($ar_tmp1,$ar_tmp2));
 /**
  * Agora que temos as keys diferentes montamos o array com os objetos
  * referentes as keys
  */
 for ($i = 0;$i < count($ar_tmp3);$i++){
   for ($j = 0; $j < count ($ar_tmp1);$j++){
    if ($array1&#91;$j&#93;->$var == $ar_tmp3[$i]){
     $ar_return[$i] = $array1[$j];
    }
   }
 }
 return $ar_return;
}
/**
 * Para testar
 */
$obj1 = new stdClass();//Classe Standart nativa do PHP
$obj1->id = 1;
$obj1->nome = 'Objeto 1';
$obj2 = new stdClass();
$obj2->id = 2;
$obj2->nome = 'Objeto 2';
$obj3 = new stdClass();
$obj3->id = 3;
$obj3->nome = 'Objeto 3';
$ar1 = array($obj1,$obj2);
$ar2 = array($obj2,$obj3);
print_r(diff('id',$ar1,$ar2));

Para quem gosta de trabalhar com array de objetos, essa seria uma boa função

Converter formato de data do MySQL para o formato BR, em uma linha de código só

O tipo date do MySQL é diferente do tipo de data a qual estamos acostumados, por exemplo o dia de hj no BD ficaria 2008-01-08, o que claramente confunde o usuário, ele pode pensar… “NOOOSSAAA ! Hoje é dia 2008…!” e acabar morrendo de susto 😀 … enfim vamos ao código …

$data_br = implode("/",array_reverse(explode("-",$data_do_bd_mysql)));

//Vou criar a funçao para ficar molezinha para quem quiser ...

function retornaData($data){
return implode("/",array_reverse(explode("-",$data)));
}

Simples não … quero ver agora como faz isso com Python … o Elcio Ferreira talvez ache uma solução …ou meu camarada Tio Mike, ou DGMike

Febre da Programação, confira !

Uma vez, uma profª de Inglês que eu tive, explicou sobre a “Febre do Inglês”, que são sintomas e características que acontecem com as pessoas quando estão há muito tempo fazendo curso de Inglêns (eu tive, levei 10 anos estudando). NO caso do Inglês os sintomas são:
1 – Pensar em inglês; do nada vc começa a ouvir seus pensamentos em Inglês
2 – Cantar uma música nacional com tradução automática; Imagine assim … “Segure o tchan”, vc canta … “Hold tchan, tie tchan”…. o negócio é sério !
3 – Dormir e sonhar que esta falando Inglês com alguém;

Então cheguei a conclusão que os programadores também possuem uma febre, alguns sintomas e características que reparei serem comuns aos que programam a um certo tempo, com uma ressalva, o tempo varia, para uns  começa mais cedo que se imagina…
Sintomas …
1 – Mania de Crtl+S em tudo, e a cada 0,003s ….
2 – Enquanto come, ou “descome”, pensa em linha de códigos
3 – Emitir ruídos estranhos quando um código funciona do tipo: Yeah … E boi… por ae vai…
4 – Na frente do computador, dançar sem música
5 – Enquanto dorme, sonha que está programando
6 – Quando passa um tempo sem programar, sente falta, entenda “um tempo” como algumas horas …
7 – Quando encontra um “ser insano” da mesma espécie, a conversa gira em torna de programação, lógico, vamos falar de que ???
8 – O mais sério de tudo, quando está fazendo algo do cotidiano, comendo, assistindo TV ou algo assim, de repente vc faz alguma besteira, fica procurando o Ctrl+Z ….

PHP em calsses X Progamação OO … ???

Bem pessoal, a POO (progamação orientada em Objeto), chegou para ficar. Linguagens como C, C++ uma das primordiais em OO, tiraram muito proveito, sendo entao inspiração para outras linguagens muito boas como JAVA, particularmente eu me amarro em JAVA. E agora com a possibilidade de implantar OO em PHP, passei a respeitar o PHP e a gostar muito dele … Porém, programar em OO em PHP, vai além de fazer Classes … Se vc fez uma classe PHP, parabéns, vc conhece a sintaxe, mas tem que conhecer o conceito. PHP em classes é diferente de Progamação OO PHP .. A programação OO demanda UML, e UML demanda regras básicas, conceitos de estruturação, e um dos conceitos iniciais do OO e da UML e possibilitar uma manuteabilidade do código, se só vc consegue entender seu código é melhor reavaliar seu UML, por isso há algumas regras simples para aplicar realmente OO na sua programação usando principios da UML. 

1ª – MVC (Model, View, Control), implemente esse padrao de sucesso ! Divida sua classe de negócio da parte visual e da parte de conexão com o BD, eu nesse Blog já falei sobre um controlador.

2ª – Designers Patterns, padrões de projetos, comece com GoF (Group of Fours) os criadores, debulhe os outros, vai adiantar muito seu projeto e organizar.

3ª – Modele, nem que seja num rascunho, modele, aprenda sobre diagramas de classes, e diagramas de caso de uso, vai ajudar a vc arquitetar seu projeto ! PS.: Na hora da modelagem, esqueça a programação, esqueça linha de código, pense como analista !

Aproveite, uma boa programação é muito prazerosa, só os programadores sabem o prazer que há num código belo e funcional !

Controladores de Interface Gráfica em PHP, procedimento para programar

Reza a dita que a interface gráfica deve ser burra, ou seja, a única finalidade dela é ser um meio de interação do usuário com o sistema, nada além disso ! Resolvemos isso com os controladores …

1º – Os controladores de GUI (Graphics User Interface – Interface Gráfica de Usuário, não vou repetir isso …. hehehe), devem ser uma camada entre as interfaces gráficas e todos as classes, quem se comunica com as classes será ele, e nao a GUI

2º –  As GUI devem deixar claro para o controlador a sua intenção

Vamos ao exemplo …

Vamos criar uma GUI simples …

<ul>
<!-- Este exemplo não vem com URL amigáveis-->
<li><a href="?classe=A&amp;metodo=Hello" >Teste A</a></li>
<li><a href="?classe=B&amp;metodo=Hello" >Teste B</a></li>
</ul>
<div>
<!-- Aqui a abaixo serão apresentado todo o resultado esperado -->
<?php
require_once ('controlador.php');
?>
</div>

Nada dificil o código acima, ele está com dois links que intentam chamar funções em classes diferentes … vamos ao controlador, não vou fazê-lo em OO para ficar mais fácil de vcs entenderem, depois é só “queimar pestana” para transformá-lo em Classe…

<?php
/* A 1ª coisa ter em mente que ele vai lidar com todas as classes
 * por isso usaremos uma factory, fábrica, já explica em outro post
 */
require_once ("factory.class.php");
$fabrica = Factory::singleton(); // Aqui estamos instanciando a nossa fábrica
// Estamos passando $_GET já que são links clicados
$classe = $_GET['classe'] // string contendo o nome da classe
$metodo = $_GET['metodo'] // string contendo o nome do método

$obj = $fabrica->getObjdaClasse ($classe)// Método da fábrica, criar Objeto
$obj->$metodo();// POde parecer mais não é POG
?>

Como falado não vou posta o Código da Factory, pois já falei em outro post… vamos as Classes …

<?php
class A{
private $algo;
public function A(){

}
public function Hello(){
echo "Eu sou o Hello da Classe A";
}
}
?>
<?php
class B{
private $algo;
public function B(){

}
public function Hello(){
echo "Eu sou o Hello da Classe B";
}
}
?>

Ta simples, porém funcional … vc pode variar muitas coisas ae, como falei até colocar em OO, pode arrumar para ser com return e por ae vai …. Esse ae foi só um meio para entender …

Post do factory: https://d3rf.wordpress.com/2007/09/27/desgin-patterns-para-php-padroes-de-projetos/