php programação poderosa
TRANSCRIPT
PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP
PHPPHPProgramação Programação
PoderosaPoderosa
PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP
ConteúdoConteúdo
● Apresentação● História● Prós e Contras● Funcionamento● Executando● Conclusão
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
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
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
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
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
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
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
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
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
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”
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......
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...
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
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
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)
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'
PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP
ExecutandoExecutando
● Boolean– true | false– “a”,”321”,1, -1,array(1) – “”,0,array(),null
● Null– null é null uai
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
PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP
ExecutandoExecutando
● Olá Mundo, hoje é 28/09/2007<?<? echo “Olá Mundo, hoje é ”;echo “Olá Mundo, hoje é ”; echo date(“d/m/Y”);echo date(“d/m/Y”);?>?>
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>
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 ));
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
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>
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 ))))
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();
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 />";}}
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>
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 ) ) ))
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
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
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?
PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP
Dúvidas???Dúvidas???
PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP
ProPHPProPHP
● www.prophp.com.br● Grupo de Profissionais PHP● Promove e fortalece iniciativas
– Eventos, palestras, atividades, etc...
PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP
DuosysDuosys
● www.duosys.com.br● Desenvolvimento, Análise, Assessoria e
Treinamentos● [email protected]
PHP: Programação PoderosaAnderson Casimiro – Duosys / ProPHP
DuodracoDuodraco
● duodraco.com● PHP e Tecnologia● Artigos, notícias, tutoriais● [email protected]