SlideShare ist ein Scribd-Unternehmen logo
1 von 12
Downloaden Sie, um offline zu lesen
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
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
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
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
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
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
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
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
Inclusão de scripts
require_once
principal.php
<?php
require_once('lib/data.inc.php');
require_once('lib/aritmetico.inc.php');

!

echo d1();
echo m1() + m2();
?>

!9

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
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
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
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

Weitere ähnliche Inhalte

Ähnlich wie Programacao Modular

Aula05-ProgramacaoparaWeb123456878915151
Aula05-ProgramacaoparaWeb123456878915151Aula05-ProgramacaoparaWeb123456878915151
Aula05-ProgramacaoparaWeb123456878915151
alderleysousa444
 
CakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloCakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro bolo
elliando dias
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porte
Felipe Ribeiro
 
Aula 01 introdução ao php
Aula 01   introdução ao phpAula 01   introdução ao php
Aula 01 introdução ao php
Adriano Castro
 

Ähnlich wie Programacao Modular (20)

PHP Tools for Fast coding
PHP Tools for Fast codingPHP Tools for Fast coding
PHP Tools for Fast coding
 
php4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPphp4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHP
 
Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend Framework
 
Aula05-ProgramacaoparaWeb123456878915151
Aula05-ProgramacaoparaWeb123456878915151Aula05-ProgramacaoparaWeb123456878915151
Aula05-ProgramacaoparaWeb123456878915151
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
Programando php com excelência
Programando php com excelênciaProgramando php com excelência
Programando php com excelência
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
Desenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHPDesenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHP
 
Security & PHP
Security & PHPSecurity & PHP
Security & PHP
 
Clean code: programando com WordPress de forma profissional
Clean code: programando com WordPress de forma profissionalClean code: programando com WordPress de forma profissional
Clean code: programando com WordPress de forma profissional
 
Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend Framework
 
Desenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHPDesenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHP
 
Desenvolvimento web com python e web2py
Desenvolvimento web com python e web2pyDesenvolvimento web com python e web2py
Desenvolvimento web com python e web2py
 
CakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloCakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro bolo
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porte
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Web
 
Aula 01 introdução ao php
Aula 01   introdução ao phpAula 01   introdução ao php
Aula 01 introdução ao php
 
PHP, Presente e Futuro
PHP, Presente e FuturoPHP, Presente e Futuro
PHP, Presente e Futuro
 
PHP Presente e Futuro
PHP Presente e FuturoPHP Presente e Futuro
PHP Presente e Futuro
 

Mehr von Daniel Arndt Alves

Mehr von Daniel Arndt Alves (20)

Arquitetura web
Arquitetura webArquitetura web
Arquitetura web
 
Histórico de Participação do Mackenzie na Maratona de Programação
Histórico de Participação do Mackenzie na Maratona de ProgramaçãoHistórico de Participação do Mackenzie na Maratona de Programação
Histórico de Participação do Mackenzie na Maratona de Programação
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Selection Sort
Selection SortSelection Sort
Selection Sort
 
Insertion Sort
Insertion SortInsertion Sort
Insertion Sort
 
Bubble Sort
Bubble SortBubble Sort
Bubble Sort
 
Análise de Algoritmos
Análise de AlgoritmosAnálise de Algoritmos
Análise de Algoritmos
 
Java RMI
Java RMIJava RMI
Java RMI
 
Java Platform, Enterprise Edition
Java Platform, Enterprise EditionJava Platform, Enterprise Edition
Java Platform, Enterprise Edition
 
Conceitos Básicos de Objetos Distribuidos
Conceitos Básicos de Objetos DistribuidosConceitos Básicos de Objetos Distribuidos
Conceitos Básicos de Objetos Distribuidos
 
Exercicios - Java Swing Listeners
Exercicios - Java Swing ListenersExercicios - Java Swing Listeners
Exercicios - Java Swing Listeners
 
Gerenciadores de Layout
Gerenciadores de LayoutGerenciadores de Layout
Gerenciadores de Layout
 
Hiearquia Window
Hiearquia WindowHiearquia Window
Hiearquia Window
 
Exercicios - Java Swing
Exercicios - Java SwingExercicios - Java Swing
Exercicios - Java Swing
 
Java AWT
Java AWTJava AWT
Java AWT
 
Java Swing
Java SwingJava Swing
Java Swing
 
Estrutura de Dados II - Plano de Ensino
Estrutura de Dados II - Plano de EnsinoEstrutura de Dados II - Plano de Ensino
Estrutura de Dados II - Plano de Ensino
 
Estrutura de Dados II - Apresentação da Disciplina
Estrutura de Dados II - Apresentação da DisciplinaEstrutura de Dados II - Apresentação da Disciplina
Estrutura de Dados II - Apresentação da Disciplina
 
Técnicas de Programação Aplicada III - Apresentação da Disciplina
Técnicas de Programação Aplicada III - Apresentação da DisciplinaTécnicas de Programação Aplicada III - Apresentação da Disciplina
Técnicas de Programação Aplicada III - Apresentação da Disciplina
 
Técnicas de Programação Aplicada III - Plano de Ensino
Técnicas de Programação Aplicada III - Plano de EnsinoTécnicas de Programação Aplicada III - Plano de Ensino
Técnicas de Programação Aplicada III - Plano de Ensino
 

Kürzlich hochgeladen

Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
azulassessoria9
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
azulassessoria9
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 

Kürzlich hochgeladen (20)

Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdf
 
Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubel
 
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedAula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
 
AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
Questões de Língua Portuguesa - gincana da LP
Questões de Língua Portuguesa - gincana da LPQuestões de Língua Portuguesa - gincana da LP
Questões de Língua Portuguesa - gincana da LP
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Apresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaApresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União Europeia
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
Missa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdfMissa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdf
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
INTERTEXTUALIDADE atividade muito boa para
INTERTEXTUALIDADE   atividade muito boa paraINTERTEXTUALIDADE   atividade muito boa para
INTERTEXTUALIDADE atividade muito boa para
 
Quiz | Dia da Europa 2024 (comemoração)
Quiz | Dia da Europa 2024  (comemoração)Quiz | Dia da Europa 2024  (comemoração)
Quiz | Dia da Europa 2024 (comemoração)
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
 

Programacao Modular

  • 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
  • 9. Inclusão de scripts require_once principal.php <?php require_once('lib/data.inc.php'); require_once('lib/aritmetico.inc.php'); ! echo d1(); echo m1() + m2(); ?> !9 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