PHP o básico

Dezembro 17, 2008 on 6:11 pm | In Informatica, php, Tutorial | 6 Comments

Estudando um pouco de PHP, tentarei escrever alguns tutoriais e exemplificar estudos para a Certificação da Zend, començando claro pelo básico...

PHP Tags

Como PHP foi desenhado para ser um processador de textos é necessário tags para identificar o código do PHP, tudo fora destas TAGS será interpretado como saída de texto, vejamos as tags :

  • Standard Tags
    CODE:
    1. <?php ... codigo ... ?>

  • Short Tags
    CODE:
    1. <? ... codigo ... ?>

  • Script Tags
    CODE:
    1. <script language ="php'> ... codigo ... </script>

  • ASP Tags
    CODE:
    1. <% ... codigo ... %>

O padrão é o Standard Tags que no caso não é possivel desabilita-las, por isso é a mais recomendada para o uso.

Data Types (Tipos de dados)

  • bollean
  • int
  • float
  • string

No caso de valores número temos :

  • Decimal
    Ex.: 10; -11; 1452;
  • Octal
    Conotação base 8 No php todo número começado com 0 (zero) é um número octal, veja sobre em : Wikipedia. Ex.: 0660; 0100;
  • Hexadecimal
    Conotação base 16, saiba sobre no Wikipedia. Ex.: 0x123; 0xA;

Variaveis Variaveis

É este o nome mesmo, é a variavel que o nome é contido em outra variavel, como assim? Veja o exemplo:

CODE:
  1. $name = 'foo';
  2. $$name = 'bar';
  3.  
  4. echo $foo;
  5. // imprime 'bar'

No caso de uma função:

CODE:
  1. function minhaFunc()
  2. {
  3.     echo 'minhaFunc';
  4. }
  5. $f = 'minhaFunc';
  6. $f();
  7. // chama a função minhaFunc

Constantes

Constantes são variaveis de valores imutaveis e podem ser acessados de quaquer escopo dentro do PHP, uma boa prática é declar-las somente com letras maiúsculas. Veja os exemplos:

CODE:
  1. define('EMAIL_PADRAO', 'silici0@gmail.com');
  2. echo EMAIL_PADRAO;
  3. // imprime 'silici0@gmail.com'
  4.  
  5. if( EMAIL_PADRAO == 'silici0@gmail.com')
  6. {
  7.  // Neste caso entra no if (TRUE)
  8. }

É isso ae, uma parte do básico esta ae, bom estudos para vocês, espero que pessoal aprenda e utilizem, ainda tem mais básico, mas vamos deixar para um próximo post.


Layout de diretorios

Novembro 21, 2008 on 12:02 pm | In Informatica, php, Tutorial | 1 Comment

Bom, eu irei na verdade aqui dar sequencia ao meu modelo de aplicação MVC, se você não conhece pode dar uma lida neste Post, seguindo a ideia vamos agora partir da ideia do layout de diretorios para nossa aplicação, usando Url Amigaveis, primeiro temos que ter em mente que poderemos ter diversos App, ou aplicativos que funcionarão como modulos (ex: Admin, Cliente, Contas, RH e assim vai) e para cada modulo estará o modelo MVC ( ou MVP ).

Iremos separar também nossas libs (Library ou bibliotecas no bom português), para que possamos atualiza-las independente do sistema (modulos) que tivermos.

Iremos também separar uma pasta chamada var que serão as variaves do sistema, são arquivos que irão sendo atualizados mudados conforme o tempo de site (no meu caso os templates do smarty e outros arquivos como xml) e iremos separar os arquivos chamados publicos (que são aqueles arquivos onde as pessoas podem visualizar e roubar de você), no caso são arquivos JS, CSS, Imagens e coisas do genêro.

Então por enquanto teremos :

CODE:
  1. /app
  2. /lib
  3. /publico
  4. /var

Colocando modulos no app e pensando que teremos o modulo rais teremos em MVC a seguinte estrutura :

CODE:
  1. O acesso a estas pastas será travada no .htaccess para maior segurança
  2. /app/
  3. /app/config
  4. /app/controller
  5. /app/model
  6. /app/view
  7. -----> Exemplo modulo Admin
  8. /app/Admin
  9. /app/Admin/config
  10. /app/Admin/controller
  11. /app/Admin/model
  12. /app/Admin/view

No caso ainda no view utilizando um sistema de templates para separar codigo de tela, eu tenho mais duas pastas que irão separar mais codigo, em vez de construir inputs, selects, e alguns outros na tela com codigo, dou preferencia para buscar uma classe que possa criar para min e eu retornar o codigo pronto para o template, assim separando o que é um codigo contrutor.

CODE:
  1. /app/view/analizador <- arquivos que somente trazem dados para o view
  2. (arquivos so escritos em php, são contrutores)
  3. /app/view/helpers <- arquivos de carater padrão entre telas ( topo.tpl,
  4. banner.tpl, menu.tpl +++ )

Pensando agora no resto da estrutra, as bibliotecas ( /lib ) o que iremos ter ? No meu caso eu terei algumas bibliotecas suporte e principalmente aqui uma biblioteca (camada de persistência - Base de dados), veja como fica:

CODE:
  1. O acesso a estas pastas será travada no .htaccess para maior segurança
  2. /lib/
  3. /lib/commom <-- classes de uso comum durante todo o sistema (ex. classe envioMail(), Upload(), Conexao() )
  4. /lib/MDB2  <--  classe camada de persistência
  5. /lib/smarty
  6. /lib/a j a x

O layout da publico é super simples e podemos criar diversas regras no .htaccess para moderamos o uso desta estrutura

CODE:
  1. /publico
  2. /publico/images
  3. /publico/scripts
  4. /publico/styles

No meu caso a var que contém os dados de teamplates compilados e cache deles.

CODE:
  1. Estrutura para dados que possam ser alterados, também protegido por htaccess
  2. /var
  3. /var/tpl_cache
  4. /var/tpl_compiled

É isso ai pessoal, logo mais vou continuar escrevendo dos htaccess de cada pasta e do index para nos acessarmos tudo isso com um unico arquivo só. Ficaria muito grande esse index e access aqui neste mesmo texto, então ficamos para a próxima.


phpConf 2008

Novembro 18, 2008 on 12:30 pm | In Informatica, Trabalho, php, Tutorial | No Comments

E lá vamos nós, ou melhor dizendo eu, confirmada minha presença nos 3 dias da php Conference Brasil 2008, vou deixar aqui a programação que pretendo assistir e participar, espero ver vocês lá.

phpConf

Quinta feira :

No período da manhã vou assitir a palestra/curso sobre SOA com o César Schneider.
No período da tarde irei voltar a trabalhar, hehehe.

Sexta-feira :

O que eu gostaria de assistir é "Camadas do desenvolvimento Web", "Vulnerabilidades", "OpenSocial", "SPL", "PHP Doc"... é algumas das palestras que me interessam ainda estou incerto do que irá me fazer melhor.

Sábado :

Sábado é um grande mistério se irei aparecer, ainda mais em relação as palestras, veremos até la o que irá aconteçer.


Namespaces no PHP

Novembro 7, 2008 on 1:13 pm | In Informatica, php, Tutorial | 4 Comments

Todo mundo vem falando da grande discução do namespace no PHP, ja que vai ser uma característica nova e nem tudo mundo está acontento do uso ou de como vai ser usado, por isso desta discução enorme, porém ainda existe muitas pessoas que nem sabe o que é namespace, por isso vou escrever para tirar as dúvidas e para exemplificar seu funcionamento.

O Porque

O uso de namespace é bom para evitarmos conflitos com nomes de classes, métodos e para o uso de classes com nomes gigantes ex: Super_ultra_mega_nome_da_classe_que_faz_algo, surgindo diversas facilidades na hora de usarmos pacotes e incluirmos bibliotecas.

Antes de tudo

Métodos estáticos, no caso quando se usa métodos estáticos não há a necessidade de se instanciar a classe, segue exemplo abaixo

CODE:
  1. class foo {
  2.     public static function bar() {
  3.         return true;
  4.     }
  5. }
  6.  
  7. // chamando o método estático
  8. $resultado  = foo::bar();

A discução

A grande discução disto tudo foi qual seria o separador do namespace, em muitas linguagens usa-se o "::" também (alias, mesmo separador que o estático), porem com a chamada em maiúscula Foo::bar(), neste caso ele pode ser confundido com um separador para chamadas de métodos estáticos, o que criaria uma confusão, neste caso então rolou uma discução em qual outro separador deveria ser usado, em principio discutiu-se muito o separador ":::" com o separador "\", no caso foi escolhido o \ por diversos motivos, que pode-se ser visto aqui.
Saiba mais sobre a discução aqui e aqui no blog do Augusto Pascutti.

Exemplos

Neste primeiro exemplo vamos lidar com nomes de classes gigantes para vermos como fica com a declaração do namespace:

mysql_base.php

CODE:
  1. // The class file
  2. namespace Mysql\DB;
  3.  
  4. class Connection_com_mysql_utilizando_foo_printando_bar {
  5.    function foo() {
  6.        echo 'bar';
  7.    }
  8. }

CODE:
  1. require 'Lib/DB/mysql_base.php';
  2.  
  3. use Mysql\DB\Connection_com_mysql_utilizando_foo_printando_bar as DbConnection;
  4.  
  5. $z = new DbConnection();
  6. $z->foo();

Lidando com nomes de classes e metodos que possam surgir com nomes iguais

arquivo1.php

CODE:
  1. namespace foo;
  2. function bar(){
  3.   echo "funcao\n";
  4. }

CODE:
  1. include 'file1.php';
  2.  
  3. class foo {
  4.     static function bar(){echo "method\n";}
  5. }
  6.  
  7. foo\bar(); // O que será impresso ?
  8. // Será impresso o "funcao", pois estamos chamando apartir do namespace

Vamos a outro exemplo simples de como podemos lidar nomes de funções/métodos iguais diante do sistema

CODE:
  1. namespace foo\foo;
  2.  
  3. function bar(){echo "func\n";}
  4.  
  5. namespace foo;
  6.  
  7. class foo {
  8.     static function bar(){echo "method\n";}
  9. }
  10.  
  11. foo\bar(); // O que sera impresso ?
  12. // Será impresso o "method", pois estamos chamando apartir do namespace foo\ caso se quisermos a função, usamos foo\foo\bar


Cortar a frase sem cortar palavras

Outubro 20, 2008 on 11:30 am | In Informatica, php, Tutorial | 5 Comments

Bom, quando temos que imprimir um texto na tela e temos um espaço determinado é comum o uso do substr() no PHP para cortarmos somente um pedaço determinado, porém com esta função ela ira retornar cortando uma palavra quando a mesma estiver na posição de termino, o que nos gera um problema, você não vai querer um texto com uma palavra no final cortada, por isso conversando com o TulioFaria (o que nós deu uma solução neste post) e com o Reflect que deu a lógica; pesquisei um pouco no PHP.net e cheguei a uma conclusão bem bacana.

Nós precisamos cortar o pedaço e neste pedaço encontrar a ultima posição do espaço, depois recortar o nosso texto nesta ultima posição, vamos as funções:

PHP:
  1. // retorna a posição exata do ultimo espaço dentro do espaço cortado
  2. // Neste caso dentro dos primeiros 50 caracteres
  3. $valor = strrpos($string, " ", -(strlen($string) - 50));
  4.  
  5. // Basta agora dizermos que queremos da posicao 0 até o valor retornado
  6. substr($string,0,$valor);
  7.  
  8. // Para imprimir em um texto podemos concatenar tudo, ficando da seguinte maneira
  9. echo 'Texto : '.substr($string,0, strrpos($string, " ", -(strlen($string) - 50)) ).' ...';


Da Query (MySQL) para JSon

Outubro 7, 2008 on 6:32 pm | In JavaScript, AJAX, Tutorial | 2 Comments

Bom, como já é comum as pessoas trabalharem com AJAX onde o envio se da para um arquivo que se conecta em um banco de dados e retorna o resultado de um Query, vou ensinar como tratar esse(s) dado(s) para retornar um Json e processar os dados sem o uso de eval(), pois como foi comentado no outro post sobre, o eval é uma função perigosa que pode executar códigos javascript maliciosos, para isso iremos usar um parser (retirado do Json.org).

Vamos ao que interessa, primeiramente vamos ver como tratar os dados de retorno de uma query, no qual precisamos criar uma array que para cada posição teremos uma array com os valores:

PHP:
  1. $query="SELECT * FROM clientes";
  2. $resp=mysql_query($query);
  3. $obj=array();
  4. while($ret=mysql_fetch_assoc($resp)){
  5. $obj[] = $ret;
  6. }
  7. echo json_encode($obj);
  8. /*Imaginemos que o Obj tenha o seguinte conteudo:
  9. Array
  10. (
  11. [0] => Array
  12. (
  13. [id] => 7
  14. [usuario] => usuario
  15. [nome] => Rafael
  16. )
  17. [1] => Array
  18. (
  19. [id] => 8
  20. [usuario] => user
  21. [nome] => Cunha
  22. )
  23. )
  24. */
  25.  
  26. /*O conteúdo do echo será
  27. [{"id":"7", "usuario":"usuario","nome":"Rafael" },
  28. {"id":"8", "usuario":"user","nome":"Cunha"}]
  29. */

Acima então no final usamos a função json_encode do PHP para passarmos nossa array para um valor representante em Json.
Agora nossa função ajax (javascript) ja recebeu os dados e o que precisamos é dar um parse para passarmos para um Obj com notação Json para podermos manipular os dados livremente, para isso precisaremos do parser que está escrito em JavaScript e pode ser feito o download na página do Json.org:

JAVASCRIPT:
  1. // Imaginando que seu Ajax (função) retorne o resultado com o nome de var data
  2. var myObject = JSON.parse(data);
  3. // Pronto: para acessarmos os dados podemos utilizar o
  4. // myObject.id
  5. // myObject.usuario
  6. // myObject.nome
  7.  
  8. // For roda o Objeto JSon e retorna valor
  9. for (var x in myObject){
  10. alert("Meu id:  "+myObject[x].id+" usuario : "+myObject[x].usuario+" nome : "+myObject[x].nome);
  11. }

Poque usar o JSON.parse() ? Na verdade como dito anteriormente é uma questão de segurança, pois este parse não executa códigos, nos livrando de problemas com scripts maliciosos, além de ser mais rápido do que simplesmente executar um eval(), este parse pode ser usado para executar funções em conjunto com a criação do Obj, basta dar uma olhada na documentação.


Next Page »

 

 Assine o feed