SlideShare une entreprise Scribd logo
1  sur  12
Télécharger pour lire hors ligne
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

Contenu connexe

Similaire à Modular PHP Functions

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 PHPRamon Ribeiro Rabello
 
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 FrameworkFlávio Lisboa
 
Aula05-ProgramacaoparaWeb123456878915151
Aula05-ProgramacaoparaWeb123456878915151Aula05-ProgramacaoparaWeb123456878915151
Aula05-ProgramacaoparaWeb123456878915151alderleysousa444
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Jaime Neto
 
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 FrameworkPablo Dall'Oglio
 
Desenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHPDesenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHPAndréia Santos
 
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 profissionalLeo Baiano
 
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 FrameworkFlávio Lisboa
 
Desenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHPDesenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHPMarcelo Andrade
 
Desenvolvimento web com python e web2py
Desenvolvimento web com python e web2pyDesenvolvimento web com python e web2py
Desenvolvimento web com python e web2pyRelsi Maron
 
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 boloelliando 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 porteFelipe Ribeiro
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Webdiogoa21
 
Aula 01 introdução ao php
Aula 01   introdução ao phpAula 01   introdução ao php
Aula 01 introdução ao phpAdriano Castro
 
PHP, Presente e Futuro
PHP, Presente e FuturoPHP, Presente e Futuro
PHP, Presente e FuturoFreedom DayMS
 

Similaire à Modular PHP Functions (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
 

Plus de Daniel Arndt Alves

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çãoDaniel Arndt Alves
 
Java Platform, Enterprise Edition
Java Platform, Enterprise EditionJava Platform, Enterprise Edition
Java Platform, Enterprise EditionDaniel Arndt Alves
 
Conceitos Básicos de Objetos Distribuidos
Conceitos Básicos de Objetos DistribuidosConceitos Básicos de Objetos Distribuidos
Conceitos Básicos de Objetos DistribuidosDaniel Arndt Alves
 
Exercicios - Java Swing Listeners
Exercicios - Java Swing ListenersExercicios - Java Swing Listeners
Exercicios - Java Swing ListenersDaniel Arndt Alves
 
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 EnsinoDaniel Arndt Alves
 
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 DisciplinaDaniel Arndt Alves
 
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 DisciplinaDaniel Arndt Alves
 
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 EnsinoDaniel Arndt Alves
 

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

Dernier

“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptxthaisamaral9365923
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptxSlides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptxLuizHenriquedeAlmeid6
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfManuais Formação
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBAline Santana
 
Regência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdfRegência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdfmirandadudu08
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdfJorge Andrade
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?Rosalina Simão Nunes
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresaulasgege
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfaulasgege
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024Jeanoliveira597523
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSilvana Silva
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxLuizHenriquedeAlmeid6
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.keislayyovera123
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasRosalina Simão Nunes
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 

Dernier (20)

“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptxSlides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdf
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
 
Regência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdfRegência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdf
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autores
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdf
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptx
 
Em tempo de Quaresma .
Em tempo de Quaresma                            .Em tempo de Quaresma                            .
Em tempo de Quaresma .
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.
 
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 

Modular PHP Functions

  • 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