php programação poderosa

37
PHP: Programação Poderosa Anderson Casimiro – Duosys / ProPHP PHP PHP Programação Programação Poderosa Poderosa

Upload: anderson-casimiro

Post on 18-May-2015

2.822 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

PHPPHPProgramação Programação

PoderosaPoderosa

Page 2: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ConteúdoConteúdo

● Apresentação● História● Prós e Contras● Funcionamento● Executando● Conclusão

Page 3: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ApresentaçãoApresentação

● Desenvolvedor Sênior PHP● 5 anos em desenvolvimento web● Palestrante PHP

– Conisli, PHP Conference, FADAP (Tupã - SP)

● Projetos: Saúde, RH, Comércio● Atualmente:

– Controle de tráfego; inteligência de trânsito

● www.duodraco.com

Page 4: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

HistóriaHistória

● 1994 ~ 1996– Rasmus Lerdorf

● Engenheiro de Software / Apache● Yahoo

– Wrapper Perl– Personal Home Pages– PHP/FI (Form Interpreter)

● 2ª versão● Analise de consultas SQL

Page 5: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

HistóriaHistória

● PHP 3 - 1998– Andi Gutmans / Zeev Suraski

● Zend

– Core reescrito– Abertura para a comunidade– Maturidade– 1999: +1 milhão de dominios usavam PHP

Page 6: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

HistóriaHistória

● PHP 4 – 2000– Zend Engine

● Core do PHP● Converte em “bytecode”, depois executa

– CLI – Interpretador de Linha de Comando– Performance melhorada– Sessions– Orientação a Objetos

Page 7: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

HistóriaHistória

● PHP 5 – 2004– Zend Engine 2– POO Aprimorada

● Destrutores, interfaces, PPP, etc.● Exceptions

– Facilidades com XML● SimpleXML

– SPL – Standard PHP Library– Performance e segurança aprimorados

Page 8: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

História – o futuroHistória – o futuro

● PHP 6 - ????– Suporte a unicode a partir do núcleo– Eliminação de diretivas inseguras

● register_globals, magic_quotes

– PDO – conexão padrão com BD– XMLReader e XMLWriter– Namespaces– Aprimoramentos

● sintaxe, performance e segurança

Page 9: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

Prós e ContrasPrós e Contras

● Open-source● Multi-plataforma● Integrável● Leve e rápido● Comunidade● Extensível● Crescente

● Open-source● Falta(va)

– framework– empresas grandes– marketing– certificação

● Segurança– configuração

Page 10: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

PrósPrós

● ~10MB (pacote completo)● Baixa carga de servidor● Conectividade com BD

– Mysql,Oracle,DB2,SQLServer,SQLite,Postgres

● PECL e PEAR– PHPClasses, frameworks

● Sempre atualizado● Oracle e IBM

Page 11: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ContrasContras

● Sem suporte completo para Unicode● Tipagem fraca● Inconsistência na nomenclatura● Falta de uso de padronização● POO ainda deficiente

– Tipagem, sobrecarga, namespace/módulo

● Marketing

Page 12: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

Apêndice 1: Porque eu uso?Apêndice 1: Porque eu uso?

● Curva de aprendizagem● Constante evolução● Custo muito baixo / Resultados excelentes● Extensões, bibliotecas, comunidade● IDEs e ferramentas● “O futuro dos sistemas é a web; PHP foi

feito para a web, diferente de outras linguagens e plataformas”

Page 13: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

FuncionamentoFuncionamento

ClienteCliente

RequisiçãoRequisição

RespostaResposta

Servidor WebServidor Web______________________________

ApacheApacheIISIIS

XitamiXitamiiSeries – IBMiSeries – IBM

......

Banco de DadosBanco de Dados____________________________________

MysqlMysqlPostgresPostgresOracleOracle

SQLServerSQLServer......

Page 14: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

FuncionamentoFuncionamento

● Servidor– Processa a requisição

● Acessa BD, XMLs, serviços, etc● Gera uma saída (HTML, XML, webservice, etc...)

– Retorna para o cliente ● Navegador, cosumidor ws, agregador RSS, etc...

● Cliente– Renderiza e processa a resposta– XML, xHTML, Javascript, CSS, etc...

Page 15: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ExecutandoExecutando

● Tags: <? ?>, <?php ?>● Comandos: terminam em ;● Blocos: definidos por { }● Variáveis: $● Constantes: define('Nome',valor)● Tipos

– String, integer, float, boolean, object, array, null e resource

Page 16: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ExecutandoExecutando

● Strings– aspas simples: 'string “crua”, \'entende\'?'– aspas duplas: “string $dinamica, 'morou'? \n”– heredoc: <<<STR

Olha que coisa, posso escreverpulando linhas 'com aspas simples'ou “duplas”e com $variaveisSTR

Page 17: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ExecutandoExecutando

● Integers e floats– 1234, -123– 0123 (octal: 83)– 0x1A (hexadecimal: )– 1.234– 1.2e3 (notação científica: 1200)

Page 18: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ExecutandoExecutando

● Array– $arr = array(1,2,3)– $arr = array(array(1,2,3),array('a','b','c'))– $arr[] = 1– $arr[3][] = 'teste'– $arr['testando'] = 'que coisa'– $a = “teste”;

● $a[2] //'s'

Page 19: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ExecutandoExecutando

● Boolean– true | false– “a”,”321”,1, -1,array(1) – “”,0,array(),null

● Null– null é null uai

Page 20: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ExecutandoExecutando

● Resource– Tipo para identificar entidades externas

● Conexão BD, ponteiro de Arquivos, etc...

● Object– Identifica instâncias de objetos

● PDO, SimpleXMLElement● stdClass

Page 21: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ExecutandoExecutando

● Olá Mundo, hoje é 28/09/2007<?<? echo “Ol&aacute; Mundo, hoje &eacute; ”;echo “Ol&aacute; Mundo, hoje &eacute; ”; echo date(“d/m/Y”);echo date(“d/m/Y”);?>?>

Page 22: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ExecutandoExecutando

● Select (html) com os meses do ano

<?<? $meses = array(0,'Janeiro','Fevereiro',$meses = array(0,'Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro');'Setembro','Outubro','Novembro','Dezembro');?>?><select name=”meses”><select name=”meses”><?for($i = 1,$i < count($meses);$i++){?><?for($i = 1,$i < count($meses);$i++){?> <option value=”<?=$i?>”><option value=”<?=$i?>”> <?=$meses[$i]?><?=$meses[$i]?> </option></option><?}?><?}?></select></select>

Page 23: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ExecutandoExecutando

● Sequência de Fibonaccifunction Fibonacci( $steps = 20 ){function Fibonacci( $steps = 20 ){ list($cur,$nxt,$inc,$seq) = array(0,1,1,array());list($cur,$nxt,$inc,$seq) = array(0,1,1,array()); do{do{ $inc++;$inc++; $seq[] = $cur;$seq[] = $cur; $add = $cur + $nxt;$add = $cur + $nxt; $cur = $nxt;$cur = $nxt; $nxt = $add;$nxt = $add; } while ( $inc <= $steps );} while ( $inc <= $steps ); return $seq;return $seq;}}echo implode(' - ',Fibonacci( 20 ));echo implode(' - ',Fibonacci( 20 ));

Page 24: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

Apêndice 2: loopsApêndice 2: loops

● for($i = 0; $i < $j; $i++){}● while($condicao){}● do{}while($condicao)● foreach($array as $chave=>$valor){}● foreach($array as $valor){}● foreach($obj as $atributo=>$valor){}

– Adoro o foreach

Page 25: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ExecutandoExecutando

● Formulários HTML<form action="script.php?var=1" method="post"><form action="script.php?var=1" method="post"> <input type="hidden" name="var" value="2" /><input type="hidden" name="var" value="2" /> Nome: <input type="text" name="nome" id="nome" /><br />Nome: <input type="text" name="nome" id="nome" /><br /> Preferencias: <br />Preferencias: <br /> <input type="checkbox" name="pref[]" value="php" /> PHP<br /><input type="checkbox" name="pref[]" value="php" /> PHP<br /> <input type="checkbox" name="pref[]" value="outra" /> Outras<br /><input type="checkbox" name="pref[]" value="outra" /> Outras<br /> <button type="submit">Vai!!!</button><button type="submit">Vai!!!</button></form></form>

Page 26: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ExecutandoExecutando

● script.php

echo $var;echo $var;print_r($_GET);print_r($_GET);print_r($_POST);print_r($_POST);

Array(Array( [var] => 1[var] => 1))Array(Array( [var] => 2[var] => 2 [nome] => teste[nome] => teste [pref] => Array([pref] => Array( [0] => php[0] => php [1] => outra[1] => outra ))))

Page 27: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ExecutandoExecutando

● Conexão com BD MySQL – estilo velho

mysql_connect('host','usuario','5 3 N h 4');mysql_connect('host','usuario','5 3 N h 4');mysql_select_db('schema');mysql_select_db('schema');$qry = mysql_query("SELECT nome,idade $qry = mysql_query("SELECT nome,idade FROM usuarios");FROM usuarios");while($rs = mysql_fetch_array($qry)){while($rs = mysql_fetch_array($qry)){ echo " - {$rs['nome']} ({$rs['idade']})<br />";echo " - {$rs['nome']} ({$rs['idade']})<br />";}}mysql_close();mysql_close();

Page 28: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ExecutandoExecutando

● Conexão com BD MySQL – PDO

$db = new PDO('mysql:host=servidor;dbname=schema',$db = new PDO('mysql:host=servidor;dbname=schema', 'usuario','5 3 N H 4');'usuario','5 3 N H 4');

foreach ($dbh->query("SELECT nome,idade foreach ($dbh->query("SELECT nome,idade FROM usuarios") as $rs){FROM usuarios") as $rs){ echo " - {$rs['nome']} ({$rs['idade']})<br />";echo " - {$rs['nome']} ({$rs['idade']})<br />";}}

Page 29: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ExecutandoExecutando

● XML: procurando dados<colecao><colecao> <disco id="1"><disco id="1"> <banda>Hammerfall</banda><banda>Hammerfall</banda> <album>Glory to the Brave</album><album>Glory to the Brave</album> </disco></disco> <disco id="2"><disco id="2"> <banda>Kamelot</banda><banda>Kamelot</banda> <album>Ghost Opera</album><album>Ghost Opera</album> </disco></disco> <disco id="3"><disco id="3"> <banda>Kamelot</banda><banda>Kamelot</banda> <album>Karma</album><album>Karma</album> </disco></disco></colecao></colecao>

Page 30: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ExecutandoExecutando

● busca.php

$sx = simplexml_load_file('colecao.xml');$sx = simplexml_load_file('colecao.xml');$busca = $sx->xpath("//disco[album='Karma']/banda");$busca = $sx->xpath("//disco[album='Karma']/banda");print_r($busca);print_r($busca);

Array(Array( [0] => SimpleXMLElement Object([0] => SimpleXMLElement Object( [0] => Kamelot [0] => Kamelot ) ) ))

Page 31: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

Apêndice 3: XPathApêndice 3: XPath

● Usado para busca de informação– Atributos e Elemrntos

● Padrão de sintaxe de busca em XML● XQuery e XPointer baseados em XPath● Base para o XSLT

– PHP suporta XSL

Page 32: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ConclusãoConclusão

● Linguagem madura● Comunidade ativa● Robusto e repleto de recursos

– O que não está pronto hoje é perfeitamente possível de ser implementado.

● Grandes empresas investem – Intel, SAP

● Apoio tecnológico– IBM, Oracle, Microsoft

Page 33: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ConclusãoConclusão

● Grandes projetos– Wallstreet Online, EA Games, McAfee– Lucent, Nortel, Avaya, Lycos– Wikipedia, Wordpress, Invision

● Leve, Rápido, Robusto e Poderoso● Precisa mais?

Page 34: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

Dúvidas???Dúvidas???

Page 35: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

ProPHPProPHP

● www.prophp.com.br● Grupo de Profissionais PHP● Promove e fortalece iniciativas

– Eventos, palestras, atividades, etc...

Page 36: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

DuosysDuosys

● www.duosys.com.br● Desenvolvimento, Análise, Assessoria e

Treinamentos● [email protected]

Page 37: PHP Programação Poderosa

PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP

DuodracoDuodraco

● duodraco.com● PHP e Tecnologia● Artigos, notícias, tutoriais● [email protected]