O documento discute programação modular em PHP, incluindo o desenvolvimento de funções, objetivos da modularização, escopo de variáveis, bibliotecas de funções e arquitetura de diretórios para aplicações PHP.
1. Programação Modular:
desenvolvimento de funções
Prof. Mauricio Garcia Nascimento
Prof. Daniel Arndt Alves
Introdução ao Desenvolvimento de Sistemas Web com PHP
Programa de Verão IME-USP 2014
2. Objetivos
Reutilização de código
Maior clareza e limpeza no código
Modularização
Agrupamento de funções em módulos específicos
!
Base para a Programação Orientada a Objetos
!2
Introdução ao Desenvolvimento de Sistemas Web com PHP - Programa de Verão IME-USP 2014
Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados
Prof. Daniel Arndt Alves – progdan@progdan.pro.br
3. Funções no PHP
Devem ter um nome exclusivo
case insensitive
Podem ter lista de parâmetros
Podem retornar valor ao código
function ola() {
echo 'Olá Mundo';
return true;
}
function incrementa($valor) {
$ret = $valor + 1;
return $ret;
}
ola();
echo incrementa(1);
$b = incrementa(2) * 10;
!
!3
!
Introdução ao Desenvolvimento de Sistemas Web com PHP - Programa de Verão IME-USP 2014
Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados
Prof. Daniel Arndt Alves – progdan@progdan.pro.br
//2
//30
4. Parâmetro opcional
function somar($a, $b=10, $c=20) {
return $a + $b + $c;
}
!
echo somar(10, 20, 30);
echo somar(3, 5);
echo somar(50);
//60
//28
//80
function fmt_data($timestamp, $fmt='d/m/Y') {
return date($fmt, $timestamp);
}
!
$ts = time();
echo fmt_data($ts, 'd/m H:i');
echo fmt_data($ts);
!4
// 25/09 20:55
// 25/09/2007
Introdução ao Desenvolvimento de Sistemas Web com PHP - Programa de Verão IME-USP 2014
Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados
Prof. Daniel Arndt Alves – progdan@progdan.pro.br
5. Escopo das variáveis nas funções
// escopo local
function incr($a) {
$a++;
return $a;
}
!
$a = 1;
echo incr($a);
echo $a;
!5
//?
//?
// escopo global
function incr2() {
global $a;
$a++;
return $a;
}
!
$a = 1;
echo incr2();
echo $a;
//?
//?
Introdução ao Desenvolvimento de Sistemas Web com PHP - Programa de Verão IME-USP 2014
Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados
Prof. Daniel Arndt Alves – progdan@progdan.pro.br
6. Função recursiva
function fatorial($n) {
!
!
//condição de saída
if (0 == $n) {
return 1;
}
return $n * fatorial($n-1);
}
!
echo fatorial(5);
!6
// 120
Introdução ao Desenvolvimento de Sistemas Web com PHP - Programa de Verão IME-USP 2014
Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados
Prof. Daniel Arndt Alves – progdan@progdan.pro.br
7. Inclusão de funções no código
Podem ser inseridas em qualquer porção do código principal
Chamada de uma função pode até mesmo ser feita antes da
sua declaração
function f1() { /*corpo da função f1*/ }
function f2() { /*corpo da função f2*/ }
!
echo f1();
echo f2() + 10;
echo f3() + f2();
!
function f3() { /*corpo da função f3*/ }
!7
Introdução ao Desenvolvimento de Sistemas Web com PHP - Programa de Verão IME-USP 2014
Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados
Prof. Daniel Arndt Alves – progdan@progdan.pro.br
8. Biblioteca de funções
Declaração de funções em arquivos específicos (bibliotecas)
Sugestões:
Arquivos com extensão *.inc.php
Diretório específico para biblioteca de funções
data.inc.php
<?php
function d1() { ... }
function d2() { ... }
...
function d10() { ... }
?>
aritmetico.inc.php
<?php
function m1() { ... }
...
function m10() { ... }
?>
!8
principal.php
<?php
// ...
echo d1();
echo m1() + m2();
?>
listagem.php
<?php
// ...
echo d10();
?>
Introdução ao Desenvolvimento de Sistemas Web com PHP - Programa de Verão IME-USP 2014
Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados
Prof. Daniel Arndt Alves – progdan@progdan.pro.br
10. Arquitetura de diretórios da aplicação
http://servidor/principal.php
/var
/www
http://servidor/login.php
principal.php
login.php
!
aritmetico.inc.php
http://servidor/menu.inc.php
menu.inc.php
http://servidor/logs/acessos.txt
usuario.class.php
/logs
http://servidor/config/parametros.php
acessos.txt
/config
parametros.php
!10
Introdução ao Desenvolvimento de Sistemas Web com PHP - Programa de Verão IME-USP 2014
Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados
Prof. Daniel Arndt Alves – progdan@progdan.pro.br
11. Arquitetura de diretórios da aplicação
Boa prática
Não armazenar bibliotecas e arquivos auxiliares em diretórios visíveis ao
Servidor Web
/var
/www
principal.php
login.php
/logs
acessos.txt
/config
parametros.php
/lib
aritmetico.inc.php
menu.inc.php
usuario.class.php
!11
http://servidor/principal.php
http://servidor/login.php
principal.php
<?php
require_once('../config/parametros.php');
require_once('../lib/menu.inc.php');
...
?>
Introdução ao Desenvolvimento de Sistemas Web com PHP - Programa de Verão IME-USP 2014
Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados
Prof. Daniel Arndt Alves – progdan@progdan.pro.br
12. Arquitetura de diretórios da aplicação
Segurança de arquivos
Apenas expor arquivos realmente necessários dentro do
diretório do Servidor Web
Arquivos PHP requisitados diretamente pelo usuário
Imagens, Javascript, Folhas de Estilo, ...
Demais arquivos (requisitados apenas
pela aplicação), não devem estar visíveis
!12
/var
/www
/js
/img
/css
/lib
/class
/config
/logs
Introdução ao Desenvolvimento de Sistemas Web com PHP - Programa de Verão IME-USP 2014
Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados
Prof. Daniel Arndt Alves – progdan@progdan.pro.br