Você está na página 1de 21

Rogrio Arajo

Questes Comentadas
74 questes comentadas
http!!rogerioaraujo"#ordpress"com
http!!rogerioaraujo"#ordpress"com
$esen%o&%imento de Sistemas
$esen%o&%imento de Sistemas
Rogrio Arajo
Questes Comentadas
74 questes comentadas
http!!rogerioaraujo"#ordpress"com
$esen%o&%imento de Sistemas
Questes do CESPE - Desenvolvimento de Sistemas PHP (Amostra)
O Autor
Eu descobri que sempre tenho escolhas. E muitas vezes, trata-se apenas de uma escolha de atitude.
Judith M. Knowlton
Nasci em Braslia!D"# $or%m# ainda $e&ueno# meus $ais se mudaram $ara
'eresina!P(# onde cresci com muito sol na moleira) Passei no concurso do
*inist%rio P+,lico da -ni.o (*P-) e /ui# em 0aneiro de 1223# lotado inicialmente
na Procuradoria da 4e$+,lica do Estado Par5 em Bel%m!PA) Atualmente# estou
lotado na Procuradoria da 4e$+,lica "ederal (P64)# em Braslia!D")
Sou es$ecialista em 6overnan7a em '( $ela -nieuro (888)unieuro)edu),r)
e em Desenvolvimento de Sistemas Baseados em So/t8are 9ivre $ela -NA*A
(-niversidade da Ama:;nia) (888)unama),r)# <raduado no curso de Bac=arelado
em Ci>ncia da Com$uta7.o $ela -ESP( (-niversidade Estadual do Piau)
(888)ues$i),r) e conclui o Curso '%cnico de Processamento de Dados $ela E'EP( (Escola '%cnica
Estadual do Piau)) No ramo de certi/ica7es# $ossuo a SC?A (Sun Certi/ied Associate /or ?1SE))
*anten=o o ,lo< =tt$@!!ro<erioarau0o)8ord$ress)com) Escrevo $osts so,re dicas e assuntos
$ara os concursos de '( e sou autor de arti<os no site do $ro/essor Aalter Cun=a
(888)8altercun=a)com)) 'ento a0udar a comunidade com meus teBtos# me es/or7ando $ara /ocar
muito mais no in/ormalismo e na descontra7.o das $alavras do &ue na&uela coisa re,usca# o
/amoso re$im,oca da $ara/usetaC
A,ra7os e vamos nessaC
4o<%rio Ara+0o ro<erioarau0o)8ord$ress)com - t8itter@ Dr<ildoarau0o E
Questes do CESPE - Desenvolvimento de Sistemas PHP (Amostra)
Sum5rio
Se fizssemos todas aquelas coisas de que somos capazes, ns nos surpreenderamos a ns mesmos.
Thomas Edson
Ca$tulo E As Questes )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) F
Ca$tulo 1 O 6a,arito )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 12
Ca$tulo F Os Coment5rios )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 1E
4o<%rio Ara+0o ro<erioarau0o)8ord$ress)com - t8itter@ Dr<ildoarau0o 1
Questes do CESPE - Desenvolvimento de Sistemas PHP (Amostra)
Ca$tulo E
As Questes
Praticamente qualquer um pode suportar a adversidade,
mas se quer testar o carter de alum, d!-lhe poder.
Abraham Lincoln
Com o o,0etivo de iniciar o desenvolvimento de uma s%rie de a$lica7es 8e, em PHP $ara uma
or<ani:a7.o &ue $ossui am,ientes de desenvolvimento e $rodu7.o &ue tra,al=am com
in/orma7es de elevado <rau de sensi,ilidade# um $ro<ramador reali:ou a instala7.o# em sua
m5&uina# de um (DE (interactive develo$ment environment) PHP)
4o<%rio Ara+0o ro<erioarau0o)8ord$ress)com - t8itter@ Dr<ildoarau0o F
Questes do CESPE - Desenvolvimento de Sistemas PHP (Amostra)
Considerando essa situa7.o =i$ot%tica e a /i<ura acima# &ue a$resenta in/orma7es acerca do
status da re/erida instala7.o# 0ul<ue os itens de E a G# acerca de conceitos de lin<ua<ens e
tecnolo<ias de $ro<rama7.o PHP)
E HCESPE 12E2 AB(N Car<o I Quest.o 3EJ A =a,ilita7.o da caracterstica de t=read sa/etK no
$ainel de in/orma7es do am,iente de runtime PHP de$ende /undamentalmente do su$orte &ue o
sistema o$eracional o/erta# e n.o# das caractersticas do :end en<ine)
1 HCESPE 12E2 AB(N Car<o I Quest.o 31J Considere &ue determinada a$lica7.o 8e, a ser
desenvolvida em PHP deva ser inte<rada aos sistemas de controle de acesso 05 $resentes nos
am,ientes de desenvolvimento e $rodu7.o da or<ani:a7.o) Nesse caso# se esses am,ientes /orem
em,asados em Ler,eros ou em 4AD(-S (remote aut=entication dial in user service)# o
$ro<ramador $oder5 o,ter >Bito na inte<ra7.o $or meio do uso de eBtenses $rovidas $ela
,i,lioteca PEC9 (PHP eBtension communitK li,rarK)# tais como os $acMa<es LAD*3 e 4AD(-S)
F HCESPE 12E2 AB(N Car<o I Quest.o 3FJ O ar&uivo de con/i<ura7.o do PHP# de nome $=$)ini#
ser5 lido a$enas no momento da iniciali:a7.o (startu$) do servidor =tt$ associado ao re/erido (DE#
&ue# no caso es$ec/ico# % o A$ac=e 1)1)EE)
N HCESPE 12E2 AB(N Car<o I Quest.o 3NJ Para &ue $ossa de$urar os scri$ts PHP &ue
construir5# o $ro<ramador n.o necessita instalar de$uradores eBternos# uma ve: &ue a
distri,ui7.o $adr.o de PHP vem acom$an=ada de de$urador)
3 HCESPE 12E2 AB(N Car<o I Quest.o 33J O acesso otimi:ado ao sistema <erenciador de ,anco
de dados (S6BD) em uso nos am,ientes de desenvolvimento e $rodu7.o da or<ani:a7.o $ode ser
o,tido $or meio da eBtens.o PDO (PHP data o,0ects)# desde &ue se0a =a,ilitado o driver PDO
es$ec/ico do S6BD em uso# uma ve: &ue a PDO n.o $rov> a,stra7.o com$leta do ,anco de dados#
mas a$enas uma camada de a,stra7.o $ara acesso aos dados# &ue n.o reescreve SQ9 nem emula
/uncionalidades de um S6BD)
O HCESPE 12E2 AB(N Car<o I Quest.o 3OJ Caso o $ro<ramador dese0e criar# <erenciar e
distri,uir internamente P or<ani:a7.o um ou mais $acMa<es &ue conten=am mQdulos ou
eBtenses $or ele desenvolvidos# % correto o uso da t%cnica de c=annels# &ue % em,asada em
ar&uitetura orientada a servi7os (SOA)# $or meio da utili:a7.o de R*9 e 4ES' (re$resentational
state trans/er))
G HCESPE 12E2 AB(N Car<o I Quest.o 3GJ Para instalar eBtenses do re$ositQrio PEA4 (PHP
eBtension and a$$lication re$ositorK)# % correto o uso do PKrus# uma vers.o re/atorada do
instalador PEA4# ca$a: de $rover maior se<uran7a aos $rocessos# $ermitindo o <erenciamento e a
distri,ui7.o de $acMa<es)
Su$on=a &ue uma e&ui$e de $ro<ramadores PHP ten=a como atri,ui7.o o desenvolvimento de um
mQdulo de so/t8are a $artir da com$osi7.o# da eBtens.o ou da ada$ta7.o de um /rame8orM) Com
,ase nessa situa7.o e considerando as ,oas $r5ticas do desenvolvimento e manuten7.o de
sistemas# incluindo-se as recomendadas $elos desenvolvedores de eBtenses $adroni:adas $ara
PHP# 0ul<ue os itens se<uintes)
4o<%rio Ara+0o ro<erioarau0o)8ord$ress)com - t8itter@ Dr<ildoarau0o N
Questes do CESPE - Desenvolvimento de Sistemas PHP (Amostra)
S HCESPE 12E2 AB(N Car<o I Quest.o 3SJ Caso o sistema de ,uild do core en<ine do PHP <ere
ar&uivos com eBtenses )lo e )la# e o re$ositQrio $adr.o de so/t8are usado no desenvolvimento
cola,orativo desse en<ine se0a o CTS (concurrent versionin< sKstem)# ent.o % correto &ue os
$ro<ramadores &ue desenvolvam mQdulos (eBtensions) $ara o en<ine colo&uem# no diretQrio do
$ro0eto# ar&uivo com nome )cvsi<nore# contendo uma lista dos ar&uivos com termina7es )lo e )la#
os &uais n.o devem ser co$iados $ara o re$ositQrio) U correto# ainda# &ue os $ro<ramadores
listem outras termina7es de ar&uivo es$ec/icas do $ro0eto &ue n.o este0am su0eitas ao controle
de verses)
I HCESPE 12E2 AB(N Car<o I Quest.o 3IJ Ao se escreverem scri$ts PHP# deve-se em$re<ar
indenta7.o com es$a7os em ,ranco# sem uso de ta,sV atri,ui7es em arraKs devem ser alin=adasV
coment5rios $odem adotar o estilo C ou estilo CWW# mas coment5rios em estilo PE49 devem ser
evitados)
E2 HCESPE 12E2 AB(N Car<o I Quest.o O2J Scri$ts de teste /uncional devem conter a
eBtens.o )$=$t# con/orme $rescreve o $adr.o de distri,ui7.o de mQdulos PHPV os diversos
arte/atos de teste relacionados a um mQdulo desenvolvido devem ser arma:enados em
su,diretQrio de nome tests# dentro do diretQrio do mQdulo ou $acMa<eV dados de con/i<ura7.o
es$ec/icos do am,iente de teste do desenvolvedor devem ser arma:enados no ar&uivo de nome
con/i<)$=$)dist)
?ul<ue os itens &ue se se<uem# acerca de scri$ts PHP)
EE HCESPE 12E2 AB(N Car<o I Quest.o OEJ Se o $edido =tt$@!!local=ost@S2S2!teste)$=$X
nomeY0oao /or a$licado de /orma ,em sucedida ao scri$t a$resentado a se<uir# ent.o# a$Qs o
$rocessamento do $edido# a sada de dados $ara o usu5rio dever5 conter a strin< 0oao e um
ar&uivo de nome 0oao)tBt# contendo a $alavra 0oao# eBistir5 no com$utador onde se encontra o
servi7o H''P associado ao re/erido $edido)
<html><body><?php
$ponteiro = fopen ($_REQUEST['nome']'t!t'"#
f$rite($ponteiro%$nome"#
f&lo'e($ponteiro"#
e&ho $_(ET['nome']#
?><)body><)html>
E1 HCESPE 12E2 AB(N Car<o I Quest.o O1J Sa,endo-se &ue a /un7.o arraKZmultisort % ca$a:
de ordenar m+lti$los arraKs na $lata/orma PHP# ent.o a sada de dados <erada $ela eBecu7.o ,em
sucedida do scri$t a,aiBo $rodu:ir5 o resultado indicado em se<uida)
scri$t@
<?php
$*r+ = *rr*y(+,% +,,% +,,% ,"#
$*r- = *rr*y(+% .% -% /"#
*rr*y_m0lti'ort($*r+% $*r-"#
1*r_d0mp($*r+"#
1*r_d0mp($*r-"#
4o<%rio Ara+0o ro<erioarau0o)8ord$ress)com - t8itter@ Dr<ildoarau0o 3
Questes do CESPE - Desenvolvimento de Sistemas PHP (Amostra)
?>
resultado@
*rr*y(/" 2
[,]=> int(,"
[+]=> int(+,"
[-]=> int(+,,"
[.]=> int(+,,"
3
*rr*y(/" 2
[,]=> int(/"
[+]=> int(+"
[-]=> int(-"
[.]=> int(."
3
EF HCESPE 12E2 AB(N Car<o I Quest.o OFJ A eBecu7.o ,em sucedida do scri$t a$resentado
a,aiBo $rodu: como sada o valor I22)
<html><body><?php
$n0m=+/# $de'lo&*do = $n0m >> -#
$'om*=$de'lo&*do#$1*lor+=+,#$1*lor-=-,#$1*lor.=.,#
$'om*4=$1*lor+4$1*lor-#$'om*5= $1*lor.#
$'om*6=+,,#
e&ho $'om*#
?><)body><)html>
EN HCESPE 12E2 AB(N Car<o I Quest.o ONJ Se o $edido =tt$@!!local=ost!teste)$=$XnomeY0oao
/or a$licado de /orma ,em sucedida ao scri$t a$resentado a,aiBo# ent.o a sada de dados dever5
conter a strin< 7o&8 de1e preen&her o' &*mpo') U correto a/irmar# ainda# &ue uma coneB.o de
socMet /oi esta,elecida entre dois $rocessos &ue se eBecutam no mesmo com$utador onde se
encontra o servi7o H''P associado ao re/erido $edido# sendo uma eBtremidade da coneB.o
associada P $orta S2 e a outra# a uma $orta cu0o n+mero n.o se $ode determinar $elas
in/orma7es a$resentadas)
<html><body><?php
if (empty($nome" 9R empty($em*il"" 2
e&ho : 7o&8 de1e preen&her o' &*mpo';#
3 el'e 2
e&ho :ol< $nome;#
3
?><)body><)html>
E3 HCESPE 12E2 AB(N Car<o I Quest.o O3J Sa,endo-se &ue a /un7.o natsort() o$era com o
conceito de ordena7.o natural# na &ual as strin<s al/anum%ricas s.o ordenadas da /orma &ue um
ser =umano ordenaria# en&uanto a /un7.o asort() o$era com o conceito de ordena7.o
4o<%rio Ara+0o ro<erioarau0o)8ord$ress)com - t8itter@ Dr<ildoarau0o O
Questes do CESPE - Desenvolvimento de Sistemas PHP (Amostra)
classicamente usado em al<oritmos de ordena7.o de strin<s# na ci>ncia da com$uta7.o# ent.o a
eBecu7.o ,em sucedida do scri$t PHP a$resentado a,aiBo $rodu:ir5# na sada# a $rimeira
ocorr>ncia da strin< im<E1)$n< antes da $rimeira ocorr>ncia da strin< im<1)$n< e a se<unda
ocorr>ncia da strin< im<E1)$n< de$ois da se<unda ocorr>ncia da strin< im<1)$n<)
<?php
$=+ = $*rr*y- = *rr*y(>im?+-pn?>% >im?+,pn?>% >im?-pn?>% >im?+pn?>"#
*'ort($=+"#
print_r($=+"#
n*t'ort($*rr*y-"#
print_r($*rr*y-"#
?>
<?php
$n = $_@9ST[>lo?in>]#
$' = $_@9ST[>'enh*>]#
in&l0de >&one&t*_my'Alin&>#
$r = my'Al_A0ery(>SEBECT 5 DR9E 0'0*rio $here lo?in='$n'>"#
$l = my'Al_n0m_ro$' ($r"#
if ($l==," 2
e&ho ><html><body><p>F*o en&ontr*doG<)p>>#
e&ho ><p><* href=H>lo?inhtmlH>>7olt*r<)*><)p>>#
e&ho ><)body><)html>>#
3 el'e 2
if ($' G= my'Al_re'0lt($r% ,% >'enh*>"" 2
e&ho ><html><body><p>In&orret*G<)p>>#
e&ho ><p><* href=H>lo?inhtmlH>>7olt*r<)*><)p>>#
e&ho ><)body><)html>>#
3 el'e 2
'et&ooJie(>n0>% $0"#
'et&ooJie(>'0>% $'"#
he*der (>Bo&*tionK p*?in*_ini&i*lphp>"#
3
3
?>
Considerando o scri$t PHP a$resentado acima# 0ul<ue os $rQBimos itens)
4o<%rio Ara+0o ro<erioarau0o)8ord$ress)com - t8itter@ Dr<ildoarau0o G
Questes do CESPE - Desenvolvimento de Sistemas PHP (Amostra)
EO HCESPE 12E2 AB(N Car<o I Quest.o OOJ -ma sess.o PHP % criada ou recu$erada
automaticamente durante a eBecu7.o do scri$t)
EG HCESPE 12E2 AB(N Car<o I Quest.o OGJ A sen=a do usu5rio &ue est5 no ,anco de dados
n.o /oi cri$to<ra/ada com um =as=# /ato &ue torna a a$lica7.o vulner5vel a ata&ues de dicion5rio)
ES HCESPE 12E2 AB(N Car<o I Quest.o OSJ O ,anco de dados *KSQ9 % usado $elo scri$t# mas
a coneB.o com o ,anco deveria ter sido encerrada ou devolvida ao $ool ao /inal do scri$t# /ato &ue
n.o se concreti:a)
EI HCESPE 12E2 AB(N Car<o I Quest.o OIJ O $edido H''P &ue $ode ser atendido $or esse
scri$t n.o $oder5 conter cooMies de nomes nu e su# al%m de estar su0eito a ata&ues de SQ9
in0ection)
?ul<ue os $rQBimos itens# &ue tratam de conceitos de $ro<rama7.o e sua a$lica7.o em lin<ua<ens
e tecnolo<ias)
12 HCESPE 12E2 AB(N Car<o I Quest.o G1J O /ormato ?SON (0avascri$t o,0ect notation) $ermite
re$resentar o,0etos e classes como estruturas de dados e arraKs associativos# sendo $ossvel seu
uso em com,ina7.o com A0aB e PHP# $or meio de ,i,liotecas diversas# como DO?O)
1E HCESPE 12E2 AB(N Car<o I Quest.o GFJ ArraKs associativos# usados em PHP e em outras
lin<ua<ens de scri$t# $odem ser im$lementados de /orma e/iciente# do $onto de vista de consumo
de memQria# $or meio do uso de ta,elas de dis$ers.o) Para <arantir e/ici>ncia# essas ta,elas
$recisam ser totalmente livres de colis.o# tal &ue# na im$lementa7.o de m%todos de ,usca# as
$es&uisas se0am eBecutadas em tem$o constante# inde$endentemente do valor $es&uisado)
11 HCESPE 12E2 AB(N Car<o I Quest.o GNJ Estruturas de dados $adroni:adas# como listas
li<adas du$lamente encadeadas# $il=as# /ilas# /ilas de $rioridade e arraKs num%ricos de taman=o
/iBo# s.o dis$onveis em PHP $or meio da eBtens.o SP9 (standard PHP li,rarK))
1F HCESPE 12E2 AB(N Car<o I Quest.o G3J Al<oritmos recursivos normalmente t>m menor
tem$o de res$osta &ue seus e&uivalentes iterativos# mas as lin<ua<ens PHP e ?avascri$t# $or serem
lin<ua<ens de scri$t# n.o $ermitem nem necessitam de recursividade)
No &ue se re/ere a S6BD associado $ara su$orte a a$lica7es 8e,# inclusive com su$orte ao
$rocessamento de transa7es e acesso concorrente e simult[neo de diversos usu5rios# 0ul<ue os
itens &ue se se<uem)
1N HCESPE 12E2 AB(N Car<o I Quest.o GOJ A im$lementa7.o de mecanismo de controle de
concorr>ncia % necess5ria $ara <arantir a atomicidade das transa7es) Esse controle % e/etuado de
/orma mais e/iciente $ela lin<ua<em =os$edeira na &ual o a$licativo % desenvolvido# como % o
caso de PHP com os ,ancos de dados $or ele utili:ados)
4o<%rio Ara+0o ro<erioarau0o)8ord$ress)com - t8itter@ Dr<ildoarau0o S
Questes do CESPE - Desenvolvimento de Sistemas PHP (Amostra)
13 HCESPE 12E2 AB(N Car<o I Quest.o GGJ A distri,ui7.o $adr.o de PHP su$orta eBtenses
com uma variedade de ,ancos S6BDs es$ec/icos# como dBase# "ire,ird# (n/ormiB# (B* DB1# (n<res#
*sSQ9# *KSQ9# Oracle# ParadoB# Post<reSQ9 e SK,ase# entre outros)
1O HCESPE 12E2 AB(N Car<o I Quest.o GSJ Entre os comandos $adr.o de <erenciamento de
transa7es# dis$onveis em eBtenses da lin<ua<em PHP# incluem-se os &ue reali:am as /un7es
de iniciar (,e<in transaction) e encerrar transa7.o (end transaction)# /a:er rool,acM de uma
transa7.o# a,ortar uma transa7.o (a,ort transaction)# /undir uma transa7.o a outra (0oin
transaction) e se$arar uma transa7.o de outra (s$lit transaction))
4o<%rio Ara+0o ro<erioarau0o)8ord$ress)com - t8itter@ Dr<ildoarau0o I
Questes do CESPE - Desenvolvimento de Sistemas PHP (Amostra)
Ca$tulo 1
O 6a,arito
"uanto maior for # cren$a em seus ob%etivos, mais depressa voc! os conquistar&
Maxwell Maltz
E 1 F N 3 O G S I E2 EE E1 EF EN E3
E C C E C C C C C E R C E C C
EO EG ES EI 12 1E 11 1F 1N 13 1O 1G 1S 1I F2
E E C E C E C E E C E
\ 6a,arito $reliminar at% o /ec=amento da edi7.o desse material)
4o<%rio Ara+0o ro<erioarau0o)8ord$ress)com - t8itter@ Dr<ildoarau0o E2
Questes do CESPE - Desenvolvimento de Sistemas PHP (Amostra)
Ca$tulo F
Os Coment5rios
"uem conhece os outros um sbio. "uem conhece a si mesmo um iluminado.
Lao Tzu
Com o o,0etivo de iniciar o desenvolvimento de uma s%rie de a$lica7es 8e, em PHP $ara uma
or<ani:a7.o &ue $ossui am,ientes de desenvolvimento e $rodu7.o &ue tra,al=am com
in/orma7es de elevado <rau de sensi,ilidade# um $ro<ramador reali:ou a instala7.o# em sua
m5&uina# de um (DE (interactive develo$ment environment) PHP)
Considerando essa situa7.o =i$ot%tica e a /i<ura acima# &ue a$resenta in/orma7es acerca do
4o<%rio Ara+0o ro<erioarau0o)8ord$ress)com - t8itter@ Dr<ildoarau0o EE
Questes do CESPE - Desenvolvimento de Sistemas PHP (Amostra)
status da re/erida instala7.o# 0ul<ue os itens de E a G# acerca de conceitos de lin<ua<ens e
tecnolo<ias de $ro<rama7.o PHP)
E HCESPE 12E2 AB(N Car<o I Quest.o 3EJ A =a,ilita7.o da caracterstica de t=read sa/etK no
$ainel de in/orma7es do am,iente de runtime PHP de$ende /undamentalmente do su$orte &ue o
sistema o$eracional o/erta# e n.o# das caractersticas do :end en<ine)
Coment5rios
Primeiro# vamos sa,er o &ue o &ue % t=read sa/etK HEJ@
]'=read sa/etK % um conceito de $ro<rama7.o de com$utadores a$lic5vel no conteBto de
$ro<ramas multi-t=read) -m $eda7o de cQdi<o % dito t=read-sa/e se ele /uncionar corretamente
durante eBecu7.o simult[nea $or v5rios t=reads)^
A<ora vamos aos coment5rios da &uest.o)
As con/i<ura7es do am,iente de runtime do PHP s.o /eitas no ar&uivo de con/i<ura7.o
$=$)ini &ue % lido &uando iniciamos o PHP) Dentro desse ar&uivo# =5 v5rias diretivas de
con/i<ura7.o H1J# das &uais destacamos duas@
_ :endZeBtension@ camin=o a,soluto $ara eBtens.o `end dinamicamente carre<ada &uando
o PHP % iniciadoV
_ :endZeBtensionZts@ variante da diretiva :endZeBtension $ara eBtenses com$iladas com
t=read sa/etK)
Podemos ent.o concluir &ue =5 a $ossi,ilidade de usar eBtenses com$iladas com t=read
sa/etK inde$endente do su$orte do sistema o$eracional) No caso da ima<em do enunciado# a
o$7.o t=read sa/etK est5 =a,ilitado)
-m outro $onto interessante &ue tra<o % &ue &uando ,aiBamos o ar&uivo ,in5rio $ara
instala7.o do PHP no am,iente Aindo8s HFJ# $or eBem$lo# $odemos o$tar $or uma vers.o
com$ilada com t=read sa/etK) O &ue tam,%m corro,ora a conclus.o do $ar5<ra/o anterior)
6a,arito@ E44ADO)
4e/er>ncias@
HEJ '=read sa/etK@ =tt$@!!$t)8iMi$edia)or<!8iMi!'=readZsa/etK
H1J 9ista de diretivas do ar&uivo $=$)ini@ =tt$@!!888)$=$)net!manual!$tZB4!ini)list)$=$
HFJ Para os ,in5rios e instalador no Aindo8s@ =tt$@!!8indo8s)$=$)net!do8nload!
1 HCESPE 12E2 AB(N Car<o I Quest.o 31J Considere &ue determinada a$lica7.o 8e, a ser
desenvolvida em PHP deva ser inte<rada aos sistemas de controle de acesso 05 $resentes nos
am,ientes de desenvolvimento e $rodu7.o da or<ani:a7.o) Nesse caso# se esses am,ientes /orem
em,asados em Ler,eros ou em 4AD(-S (remote aut=entication dial in user service)# o
$ro<ramador $oder5 o,ter >Bito na inte<ra7.o $or meio do uso de eBtenses $rovidas $ela
,i,lioteca PEC9 (PHP eBtension communitK li,rarK)# tais como os $acMa<es LAD*3 e 4AD(-S)
Coment5rios
O $ro0eto PEC9 (PHP EBtension CommunitK 9i,rarK) HEJ %@
_ -m re$ositQrio de eBtenses PHP# /ornecendo uma lista de todas as eBtenses
con=ecidasV e
_ -ma =os$eda<em &ue /acilita o do8nload e o desenvolvimento de eBtenses do PHP)
4o<%rio Ara+0o ro<erioarau0o)8ord$ress)com - t8itter@ Dr<ildoarau0o E1
Questes do CESPE - Desenvolvimento de Sistemas PHP (Amostra)
Entre v5rias eBtenses ou $acMa<es dis$onveis no PEC9 H1J# temos@
_ LAD*3 HFJ@ $ermite o acesso a servidores de administra7.o Ler,eros# onde % $ossvel
criar# modi/icar e a$a<ar o,0etos Ler,eros e $olticasV eV
_ 4AD(-S HNJ@ /ornece su$orte com$leto $ara a autentica7.o 4AD(-S)
6a,arito@ CE4'O)
4e/er>ncias@
HEJ Pro0eto PEC9@ =tt$@!!$ecl)$=$)net!indeB)$=$
H1J 9ista dos $acMa<es no PEC9@ =tt$@!!$ecl)$=$)net!$acMa<es)$=$
HFJ PacMa<es 4AD(-S@ =tt$@!!$ecl)$=$)net!$acMa<e!Madm3
HNJ PacMa<es LAD*3@ =tt$@!!$ecl)$=$)net!$acMa<e!radius
A &uest.o trouBe tr>s itens $ara serem analisados@
_ Scri$ts de teste /uncional devem conter a eBtens.o )$=$t# con/orme $rescreve o $adr.o
de distri,ui7.o de mQdulos PHPV
_ Os diversos arte/atos de teste relacionados a um mQdulo desenvolvido devem ser
arma:enados em su,diretQrio de nome tests# dentro do diretQrio do mQdulo ou $acMa<eV
e
_ Dados de con/i<ura7.o es$ec/icos do am,iente de teste do desenvolvedor devem ser
arma:enados no ar&uivo de nome con/i<)$=$)dist)
PHP' testes se<uem uma conven7.o muito ri<orosa de nomea7.o) (sso % /eito $ara
/acilmente identi/icar o &ue cada teste /a:) Os testes devem ser nomeados de acordo com a
se<uinte lista HEJ@
_ 'este $ara ,u<@ ,u<a,u<idb)$=$t (,u<EGE1F)$=$t)V
_ "uncionamento ,5sico da /un7.o@ a/unctionnamebZ,asic)$=$t (d,aZo$enZ,asic)$=$t)V
_ Erros da /un7.o@ a/unctionnamebZerror)$=$t (d,aZo$enZerror)$=$t)V
_ Taria7.o do /uncionamento da /un7.o@ a/unctionnamebZvariation)$=$t
(d,aZo$enZvariation)$=$t)V
_ EBtenses@ aeBtnamebanob)$=$t (d,aZ22F)$=$t))
9o<o# o $rimeiro item est5 errado $or&ue scri$ts de teste /uncional n.o devem a$enas
conter a eBtens.o )$=$t) U necess5rio se<uir uma nomenclatura)
Quanto aos dois +ltimos itens# n.o conse<ui /ontes $ara eB$lic5-los)
6a,arito@ E44ADO)
E1 HCESPE 12E2 AB(N Car<o I Quest.o O1J Sa,endo-se &ue a /un7.o arraKZmultisort % ca$a:
de ordenar m+lti$los arraKs na $lata/orma PHP# ent.o a sada de dados <erada $ela eBecu7.o ,em
sucedida do scri$t a,aiBo $rodu:ir5 o resultado indicado em se<uida)
scri$t@
<?php
$*r+ = *rr*y(+,% +,,% +,,% ,"#
4o<%rio Ara+0o ro<erioarau0o)8ord$ress)com - t8itter@ Dr<ildoarau0o EF
Questes do CESPE - Desenvolvimento de Sistemas PHP (Amostra)
$*r- = *rr*y(+% .% -% /"#
*rr*y_m0lti'ort($*r+% $*r-"#
1*r_d0mp($*r+"#
1*r_d0mp($*r-"#
?>
resultado@
*rr*y(/" 2
[,]=> int(,"
[+]=> int(+,"
[-]=> int(+,,"
[.]=> int(+,,"
3
*rr*y(/" 2
[,]=> int(/"
[+]=> int(+"
[-]=> int(-"
[.]=> int(."
3
Coment5rios
A /un7.o arraKZmultisort HEJ# como di: corretamente a &uest.o# ordena m+lti$los arraKs ou
arraKs multidimensionais) -m arraK multidimensional % um arraK de arraKs)
Tamos ver dois eBem$los do uso do arraKZmultisort) O $rimeiro % id>ntico P &uest.o)
<?php
$*r+ = *rr*y(+,% +,,% +,,% ,"#
$*r- = *rr*y(+% .% -% /"#
*rr*y_m0lti'ort($*r+% $*r-"#
1*r_d0mp($*r+"#
1*r_d0mp($*r-"#
?>
EBem$lo F)N@ Ordenando m+lti$los arraKs)
No eBem$lo F)N# de$ois da ordena7.o# o $rimeiro arraK ter5 os elementos ordenados como
2# E2# E22# E22) O se<undo ter5 a ordem N# E# 1# F) As entradas do se<undo arraK corres$ondem
Ps entradas id>nticas como /oram ordenadas no $rimeiro arraK) O resultado <erado do cQdi<o do
eBem$lo ser5@
*rr*y(/" 2
[,]=> int(,"
[+]=> int(+,"
4o<%rio Ara+0o ro<erioarau0o)8ord$ress)com - t8itter@ Dr<ildoarau0o EN
Questes do CESPE - Desenvolvimento de Sistemas PHP (Amostra)
[-]=> int(+,,"
[.]=> int(+,,"
3
*rr*y(/" 2
[,]=> int(/"
[+]=> int(+"
[-]=> int(-"
[.]=> int(."
3
<?php
$*r = *rr*y(
*rr*y(>+,>% ++% +,,% +,,% >*>"%
*rr*y( +% -% >->% .% +"
"#
*rr*y_m0lti'ort($*r[,]% S9RT_=SC% S9RT_STRIF(%
$*r[+]% S9RT_FUEERIC% S9RT_LESC"#
1*r_d0mp($*r"#
?>
EBem$lo F)3@ Ordenando um arraK multidimensional)
No eBem$lo F)3# de$ois da ordena7.o# o $rimeiro arraK se trans/ormar5 em cE2c# E22# E22#
EE# cac# $ois ele /oi ordenado como strin<s (SO4'ZS'4(N6) em ordem ascendente (SO4'ZASC)) O
se<undo conter5 E# F# c1c# 1# E# $ois /oi ordenado como n+meros (SO4'ZN-*E4(C) em ordem
descendente (SO4'ZDESC)) O resultado <erado do cQdi<o do eBem$lo ser5@
*rr*y(-" 2
[,]=> *rr*y(M" 2
[,]=> 'trin?(-" >+,>
[+]=> int(+,,"
[-]=> int(+,,"
[.]=> int(++"
[/]=> 'trin?(+" >*>
3
[+]=> *rr*y(M" 2
[,]=> int(+"
[+]=> int(."
[-]=> 'trin?(+" >->
[.]=> int(-"
[/]=> int(+"
3
3
4o<%rio Ara+0o ro<erioarau0o)8ord$ress)com - t8itter@ Dr<ildoarau0o E3
Questes do CESPE - Desenvolvimento de Sistemas PHP (Amostra)
Para ver mais /un7es de PHP $ara arraKs# acessem
=tt$@!!888)$=$)net!manual!$tZB4!re/)arraK)$=$)
6a,arito@ CE4'O)
4e/er>ncia@
HEJ arraKZmultisort@ =tt$@!!888)$=$)net!manual!$tZB4!/unction)arraK-multisort)$=$
EN HCESPE 12E2 AB(N Car<o I Quest.o ONJ Se o $edido =tt$@!!local=ost!teste)$=$XnomeY0oao
/or a$licado de /orma ,em sucedida ao scri$t a$resentado a,aiBo# ent.o a sada de dados dever5
conter a strin< 7o&8 de1e preen&her o' &*mpo') U correto a/irmar# ainda# &ue uma coneB.o de
socMet /oi esta,elecida entre dois $rocessos &ue se eBecutam no mesmo com$utador onde se
encontra o servi7o H''P associado ao re/erido $edido# sendo uma eBtremidade da coneB.o
associada P $orta S2 e a outra# a uma $orta cu0o n+mero n.o se $ode determinar $elas
in/orma7es a$resentadas)
<html><body><?php
if (empty($nome" 9R empty($em*il"" 2
e&ho : 7o&8 de1e preen&her o' &*mpo';#
3 el'e 2
e&ho :ol< $nome;#
3
?><)body><)html>
Coment5rios
A &uest.o trouBe duas disci$linas di/erentes@ desenvolvimento de sistemas (PHP) e redes de
com$utadores ('CP!(P)) Como este material co,re a$enas o desenvolvimento de sistemas
utili:ando a lin<ua<em PHP# vou comentar a$enas a $arte da &uest.o &ue trata disso)
Te0am &ue a &uest.o % $arecida com a EEd) 95# tivemos uma ,oa introdu7.o Ps vari5veis
$rede/inidas e al<umas /un7es) A&ui# nesta &uest.o# vamos /alar um $ou&uin=o so,re vari5veis
no PHP HEJ)
As vari5veis no PHP s.o re$resentadas $or um ci/r.o (e) se<uido do nome da vari5vel ($or
eBem$lo# enome)) Destaco uma nota so,re vari5veis nessa lin<ua<em (nota F)N))
_ Os nomes de vari5vel no PHP /a:em distin7.o entre mai+sculas e min+sculasV
_ -m nome de vari5vel v5lido se inicia com uma letra ou su,lin=ado# se<uido de &ual&uer
n+mero de letras# al<arismos ou su,lin=adosV e
_ A lin<ua<em PHP % /racamente ti$ada# ou se0a# n.o % necess5rio declarar o ti$o de uma
vari5vel nessa lin<ua<em)
Nota F)N@ Tari5veis no PHP)
O eBem$lo F)O tra: al<umas situa7es com vari5veis no PHP)
<?php
4o<%rio Ara+0o ro<erioarau0o)8ord$ress)com - t8itter@ Dr<ildoarau0o EO
Questes do CESPE - Desenvolvimento de Sistemas PHP (Amostra)
$1*r = 'Ro?Nrio'#
$7*r = '=r*OPo'#
e&ho >$1*r $7*r># )) e!ibe >Ro?Nrio =r*OPo>
$/1*r = '1*ri<1el in1<lid*'# )) in1<lido# &omeQ* &om 0m nOmero
$_/1*r = '1*ri<1el 1<lid*'# )) 1<lido# &omeQ* &om 0m '0blinh*do
$eitR = '1*ri<1el *ind* 1<lid*'# )) 1<lido# 'R' N 0m &*r*&ter =SCII (e!tendido"
--S
$1*ri<1el = '&omeQ* 'endo 0m* 'trin?'# )) &omeQ* 'endo 0m* 'trin?
$1*ri<1el = +,# )) termin* 'endo 0m inteiro
?>
EBem$lo F)O@ Situa7es com vari5veis no PHP)
De$ois dessa $e&uena introdu7.o a varia7es em PHP# vamos comentar o cQdi<o da
&uest.o)
A /un7.o em$tK H1J in/orma se a vari5vel est5 va:ia) Para o PHP# s.o considerados valores
va:ios@
_ cc (strin< va:ia)V
_ 2 (2 como um inteiro)V
_ c2c (2 como uma strin<)V
_ N-99V
_ "A9SEV
_ arraK() (arraK va:io)V
_ var evarV (vari5vel declarada em uma classe# $or%m sem nen=um valor))
'anto enome &uanto eemail n.o /oram iniciali:adas com nen=um valor) Com isso# $odemos
tam,%m consider5-las tam,%m como va:ias) Como citado corretamente na &uest.o# a sada de
dados do cQdi<o ser5 7o&8 de1e preen&her o' &*mpo') Se as duas vari5veis estivessem
iniciali:adas com al<um valor di/erente dos citados acima (a$enas nesse caso)# a sada seria ol<
Ro?Nrio# assumindo &ue a vari5vel enome /osse iniciali:ada com o valor ]4o<%rio^)
- 4o<%rio# $or &ue a se<unda sada a$enas acontece no caso de am,as as vari5veis estarem
iniciali:adasX
Se uma delas estiver va:ia# temos a $rimeira sada# $ois a &uest.o est5 tra,al=ando com o
o$erador O4 HFJ) Como resumo dos o$eradores lQ<icos# tra<o a ta,ela F)1)
Nome EBem$lo 4esultado
E ea and e,
Terdadeiro ('4-E) se tanto ea &uanto e, s.o verdadeiros)
O- ea or e,
Terdadeiro se ea ou e, s.o verdadeiros)
RO4 ea Bor e,
Terdadeiro se ea ou e, s.o verdadeiros# mas n.o am,os)
NfO Cea
Terdadeiro se ea n.o % verdadeiro)
4o<%rio Ara+0o ro<erioarau0o)8ord$ress)com - t8itter@ Dr<ildoarau0o EG
Questes do CESPE - Desenvolvimento de Sistemas PHP (Amostra)
E ea gg e,
Terdadeiro ('4-E) se tanto ea &uanto e, s.o verdadeiros)
O- ea (( e,
Terdadeiro se ea ou e, s.o verdadeiros)
'a,ela F)1@ O$eradores lQ<icos)
A ra:.o $ara as duas variantes dos o$erandos candc e corc % &ue eles o$eram com
$reced>ncias di/erentes HNJ)
Nota F)3@ Duas variantes dos o$erandos candc e corc)
6a,arito@ CE4'O)
4e/er>ncias@
HEJ (ntrodu7.o a Tari5veis no PHP@
=tt$@!!888)$=$)net!manual!$tZB4!lan<ua<e)varia,les),asics)$=$
H1J em$tK@ =tt$@!!,r1)$=$)net!manual!$tZB4!/unction)em$tK)$=$
HFJ O$eradores 9Q<icos@ =tt$@!!888)$=$)net!manual!$tZB4!lan<ua<e)o$erators)lo<ical)$=$
HNJ Preced>ncia de O$eradores@
=tt$@!!888)$=$)net!manual!$tZB4!lan<ua<e)o$erators)$recedence)$=$
4o<%rio Ara+0o ro<erioarau0o)8ord$ress)com - t8itter@ Dr<ildoarau0o ES
http://rogerioaraujo.wordpress.com
http://rogerioaraujo.wordpress.com
http://rogerioaraujo.wordpress.com