18
Tecnologias server-side: PHP Carlos Santos LabMM 4 - NTC - DeCA - UA Aula 10, 21-03-2013

LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP

Tecnologias server-side: PHP

Carlos SantosLabMM 4 - NTC - DeCA - UAAula 10, 21-03-2013

Page 2: LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP

Um pouco de história

1995

• Rasmus Lerdorf desenvolve Scripts CGI em Perl (contador devisitantes da sua página)

• oferece esses script sob o nome – Personal Home Page

1997

• PHP 2.0 (Personal Home Page/Form Interpreter) - utiliza linguagem C• popularidade cresce exponencialmente• desenvolve-se uma comunidade de programadores/utilizadores

1998

• PHP 3.0, em 1999 tem já mais de 1 milhão de utilizadores• Andi Gutmans, Zeev Suraski

Page 3: LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP

Um pouco de história

2000

• PHP 4.0 passa a significar PHP: Hypertext Preprocessor • motor/parser reescrito -> Zend Engine• introduz: gestão recursos, OOP e gestão de sessões

2004

• PHP 5.0 (versão atual é a 5.4.##)• maior suporte a OOP com desenvolvimento de frameworks (Zend)• suporte a XML, Web Services, …• utilizada em mais de 20 milhões de web sites…

20??

• PHP 6.0, ainda em desenvolvimento…

Page 4: LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP

Arquitetura

funciona numa plataforma Web

• Exemplo: Apache Web Server + Módulo PHP

permite o desenvolvimento de aplicações Web numaarquitetura de 3 camadas

a linguagem PHP é processada no servidor (server-side)

está normalmente embebida em páginas HTML e gera HTML!

Apresentação•HTML,  CSS,  Javascript,  AJAX,  …

Lógica•PHP

Dados•MySQL

Page 5: LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP

Caraterísticas

simples de usar, generalidade das funções está disponível por defeito

poderosa, centenas de livrarias disponíveis (acesso facilitado a funções)

flexível, permite a livre escolha das soluções para a implementação das aplicações Web (por exemplo: escolher livremente o SGBDR a utilizar)

gratuita

desenvolvida colaborativamente, maior evolução

Page 6: LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP

Funcionamento

todo o PHP (embebido no HTML) é processado no servidor

para o browser (client-side) será enviada uma página apenas com HTML

<body> <p>Hello World</p></body>

Page 7: LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP

Páginas estáticas

uma página estática é uma página cujo conteúdo e aspeto foram determinados pelo seu autor.

• o conteúdo e o aspeto são constantes independentemente de quem visita a página, quando a visita ou como a visita

• alterações numa página estática só podem ser efectuadas através da edição do código

• exemplo: uma página HTML que se encontra publicada num servidor Web

Page 8: LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP

Páginas dinâmicas

uma página dinâmica para a Web é uma página cujo conteúdo e aspeto não são totalmente determinados no seu estado inicial (isto é, quando foi publicada pelo seu autor)

• os conteúdos e aspeto são determinados após um utilizador executar um pedido da mesma, ao servidor Web, através de um browser

• os conteúdos e aspeto da página podem variar de pedido para pedido• exemplo: página HTML com PHP embebido

no momento em que existe um pedido de acesso à página, o PHP embebido é executado no servidor para gerar a página final

Page 9: LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP

Páginas dinâmicas

existem dois tipos de tecnologias dinâmicas:

• server-side (executado no servidor)• PHP• .Net (ASP)• JSP• Perl• ...

• client-side (executado no browser)• JavaScript• DART• Flash• ...

Page 10: LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP

Como saber o que temos disponível no servidor?

para ver a configuração do PHP atualmente instalada num qualquer servidor Web

<?php phpinfo(); ?>

mostra módulos extras ativos no PHP

o PHP no Apache é configurado através do ficheiro php.ini

Page 11: LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP

estrutura e sintaxe

sintaxe a utilizar

<body>! ! <?php echo "Hello World"; ?> ! </body>

separação das instruções “;”

<body>! ! <?php ! ! echo "Hello World"; ! ! echo “Peace and Love!!!!“;! ! ?> </body>

Page 12: LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP

estrutura e sintaxe

múltiplos blocos de código PHP numa página HTML

<body> ! ! <?php echo "Hello World"; ?>

! ! <p> Outro HTML</p>

! ! <?php echo “Peace and Love"; ?> ! </body>

Page 13: LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP

Comentários

comentários

<?php // Este é um comentário // Este é outro comentário echo "Hello World"; /* Este é outro comentário que ocupa mais do que uma linha */ echo "Olá Mundo";

?>

comentários no estilo shell unix

<?php ! ! # Este é um comentário! ! # Este é outro comentário! ! echo "Hello World"; ! ?>

Page 14: LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP

case sensitive?

Case sensitive (both user defined and PHP defined)

• variables• constants• array keys• class properties• class constants

Case insensitive (both user defined and PHP defined)

• functions• class constructors• class methods• keywords and constructs (if, else, null, foreach, echo etc.)

http://the-echoplex.net/log/php-case-sensitivity

Page 15: LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP

Output

<?php print("<p>Hello World</p>"); ?>

<?php print("<p>Hello World. I’m $name.</p>"); ?>

<?php echo "<p>Hello World. I’m $name.</p>"; ?>

Page 16: LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP

Output

<?php printf(“Bar: %d garrafas.”, $bottles); ?>

• identificador de tipo/formato da variável -> %d (inteiro)• mistura/formata a parte dinâmica e parte estática da string

<?php $MeuTexto = sprintf(“Preço: %.2f.”, $Price); ?>

• igual ao printf mas devolve resultado para uma variável do tipo string

Page 17: LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP

Output

<?php printf(“Bar: %d garrafas.”, $bottles); ?>

Se $bottles = 6.113 -> “Bar: 6 garrafas.”

<?php $MeuTexto = sprintf(“Preço: %.2f.”, $Price); ?>

Se $Price = 25.9183 -> $MeuTexto = “Preço: 25.92.”

Page 18: LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP

printf e sprintf

especificação do tipo de dados para a formatação:

• %b -> número binário• %c -> caracter correspondente ao código ASCII• %d -> número inteiro com sinal• %f ->número em vírgula flutuante• %o -> número em octal• %s -> string• %u -> número inteiro sem sinal• %x -> número hexadecimal em minúsculas • %X -> número hexadecimal em maiúsculas