SlideShare une entreprise Scribd logo
1  sur  91
Rumo à certificação PHP 
Ari Stopassola Junior
Ari Stopassola Junior 
Bacharel em Informática com ênfase em Análise de 
Sistemas pela Unisinos, cursou mestrado em Engenharia 
Informática e de Computadores pelo Instituto Superior 
Técnico da Universidade Técnica de Lisboa (Portugal), 
perito judicial 'ad hoc' especializado em TI (mantenedor do 
site PERITO.inf.br), Zend Certified Engineer (PHP 5.3) e 
Zend Certified PHP Engineer (PHP 5.5) #ZEND004019, 
Certified ScrumMaster pela Scrum Alliance #203613, 
Microsoft Certified Professional (MCP), consultor web e PHP 
evangelist.
Certificações PHP 
• CP-470 PHP – National Computer Science Academy 
(NCSA) 
http://www.ncsacademy.com/certification/php.cfm 
• W3Schools 
http://www.w3schools.com/cert/cert_php.asp 
• Brainbench 
• "Zend Certified PHP Engineer" (ZCPE PHP 5.5), 
promovida pela Zend Technologies Ltd. 
A mais 
prestigiada!
Vantagens 
• Prestígio e reconhecimento junto a comunidade 
• Processo rigoroso de aprovação 
• Demonstra maturidade e proficiência na linguagem 
• Permissão para uso dos logotipos oficiais nos cartões de visita 
• Ganha uma licença perpétua do editor Zend Studio (versão vigente) 
• Visibilidade internacional através da “Zend Certified Engineer 
Directory”, antigamente conhecida como “Yellow Pages” 
• Diferencial e bonificações salariais 
• Descontos em conferências Zend 
• O título ZCE/ZCPE não expira! 
• Acesso a grupos exclusivos 
• Oportunidades de outsourcing
Histórico
Estatísticas: 
Yellow Pages 
Até o momento (outubro/2014) há somente 369 
profissionais certificados ZCE/ZCPE no Brasil: 
http://www.zend.com/en/services/certification/zend-certified-engineer-directory 
http://www.zend.com/en/yellow-pages/ZEND004019
Logotipo para empresas que 
desejam contratar profissionais 
ZCPE 
Desconto na compra de vouchers acima de 10 unidades: sales@zend.com
Preço e cupons de 
desconto 
http://www.softwarediscountcodes.com/zend-phpcertification. 
html 
7 a 10% 
http://www.softwarevouchers.com/zend-phpcertifications.html 
http://www.retailmenot.com/view/zend.com 
• Havia um bug no site onde o preço nos EUA (atribuído em 
dólar) era o mesmo valor da Europa (porém em euros, mais 
oneroso) 
http://shop.zend.com/eu/php-certification.html 
€170.00 
http://shop.zend.com/en/php-certification.html 
$195.00
Conta na Zend: 
http://shop.zend.com
Pearson VUE 
http://vue.com/zend
Idioma 
Na versão 5.5 
existe apenas o 
inglês. 
Nas vesões 
anteriores, havia a 
possibilidade de 
escolher entre: 
alemão, francês, 
inglês e japonês.
Local do exame
Agendamento
Confirmação
Usando o voucher da 
Zend 
Algo como: 
ZTPB379B231A
Finalizando
Atualizando a certificação
Zend Education 
Advisory Board 
Fonte: http://www.zend.com/services/certification/php-5-certification/education-advisory-board
Dia da prova 
• A PearsonVUE recomenda que você 
chegue UMA hora antes 
• Leve DOIS documentos oficiais 
identificadores com foto, para evitar 
fraudes 
• Esteja hidratado 
• Não é permitido levar qualquer material – 
eles ficam armazenados num armário 
chaveado 
• Não é permitido levantar-se no decorrer 
do exame. Ida ao banheiro é controlada
Itens permitidos 
• Eraseable board (quadro apagável) 
• Protetor auricular 
Fonte: http://www.gedtestingservice.com/testers/noteboards 
• Sua conduta é monitorada o tempo todo 
• Qualquer suspeita de irregularidade, sua 
prova é invalidada
Quiz #1 
Eraseable board 
<?php 
interface i1 {} 
interface i2 extends i1 {} 
interface i3 {} 
class c1 {} 
class c2 extends c1 {} 
class c3 extends c2 implements i2, i3 {} 
$c3 = new C3(); 
echo $c3 instanceof c1; 
echo $c3 instanceof c2; 
echo $c3 instanceof c3; 
echo $c3 instanceof i1; 
echo $c3 instanceof i2; 
echo $c3 instanceof i3; 
?> 
|
Reagendamento 
• Pode-se reagendar quantas vezes quiser 
durante UM ano, através do site 
http://www.pearsonvue.com 
• No mínimo 48 horas de antecedência 
• Sem custo adicional 
• Porém, há um efeito colateral…
Ansiedade
Estrutura do exame 
• 70 perguntas randômicas 
• Limite de 90 minutos para respondê-las 
• ≅1 minuto e 17 segundos por questão! 
• Caráter neutro 
• Jamais se repetem 
• Distribuídas entre os dez tópicos 
• Tem mesmo peso 
• Respostas incorretas não geram 
penalidades
O que NÃO cai 
Classes ou extensões externas provenientes da PEAR/Pyrus ou PECL 
(CodeSniffer, PhpDocumentor, xDebug, profiler, GD, Phing, fPDF), ou 
vindo de outros repositórios como a PHPUnit, Composer (gerenciador de 
dependências), Suhosin (sistema de segurança em PHP), sistemas para 
controle de versão (CVS, Subversion, Git, Mercurial), empacotamento 
PHAR, procedimentos para Integração Contínua com Jenkins (e seus 
módulos como PHPMD-MessDetector, DRY-Copy&Paste Detector, 
PHP_Depend), sistema de templates (Smarty e Twig), PHP-GTK, 
Frameworks (CakePHP, CodeIgniter, Symfony, ZendFramework, YII, 
Prado), CMS (Typo3, Wordpress, Joomla!, Drupal), sistemas 
especializados (Magento, SugarCRM ou phpMyAdmin), editores 
(ZendStudio, NetBeans, PDT, Aptana, PhpED), mecanismos de cache 
(APC, Memcache e Gearman), ORM (Propel ou Doctrine), funções SQL 
específicas de algum banco de dados (que não sejam ANSI SQL), bases 
NoSQL e ferramentas Zend como Zend Optimizer+, Zend Java Bridge, 
Zend Guard Loader e outros.
FAIL 
“Certification Exam Retakes”. Para mais 
informações escreva: 
certification@zend.com
CONGRATULATIONS
Relatório emitido no ato
Diploma físico
Dez tópicos 
• Fundamentos do 
PHP 
• Funções 
• Formato de dados 
e tipos 
• Recursos Web 
• Programação 
Orientada à 
Objetos 
• Segurança 
• I/O (Entrada e 
Saída) 
• Strings e Padrões 
• Banco de Dados 
• Arrays
Enunciados 
• Não há syntax highlight 
• O algoritmo é sempre na linguagem PHP – não exibem 
pseudocódigos 
• Podem conter imagens para ilustrar (geralmente alguma 
tabela de BD, diagrama UML etc) 
• Independem de Sistema Operacional e Sistema 
Gerenciador de Banco de Dados (SGBD) 
• O teste também aborda, indiretamente, HTTP e SQL 
(Structured Query Language), XML (XPath) e JSON 
• Nem sempre eles estarão em blocos terminados em ?>, a 
menos que haja HTML (ou JavaScript) embedded 
• Pode fazer referência ao Apache (servidor de aplicação)
Resposta: escolha única 
✓
LEFT JOIN 
SELECT names.name,emails.email 
FROM names 
LEFT JOIN emails ON emails.id=names.id; 
names emails 
Prioriza a tabela da “esquerda”, que 
foi referenciada primeiro. Ou seja: 
permite que uma das tabelas 
(names) retorne linhas mesmo que 
não haja equivalência na outra tabela 
(emails).
Resposta: escolha 
múltipla 
✓ 
✓
Quiz #4 
Preencha o espaço em branco com o nome 
adequado. 
A função _____________ __autoload() 
chama 
automaticamente os recursos necessários 
sempre que um usuário tenta instanciar uma 
classe inexistente. 
Nomes de funções devem ser escritas em caixa 
baixa (lowercase), sem espaços em branco, nem 
explicações ou comentários. Com ou sem 
parênteses.
Resposta: campo 
aberto 
• É um tipo de pergunta menos frequente 
• Recebe: 
– Nomes de funções/métodos/classes 
– Conteúdo de variáveis 
– Saída de código 
– Pequenos trechos (snippets) 
– Tipos de erro: Notice, Warning ou Fatal 
error 
– Nome de constantes 
– Cláusula do php.ini
Freetext 
abstract
Cláusulas padrão do php.ini 
• register_globals = Off 
• magic_quotes_gpc = Off 
• error_reporting = E_ALL 
• display_errors = On 
Lembrando que as diretivas podem ser 
indicadas por 1 e 0, respectivamente On e Off. 
Ex.: asp_tags = 0 (representa “Off”, 
desligado).
5 MIL funções 
Devo mentalizar todas elas? 
E a ordem de parâmetros? 
O foco do teste é em 
análise de algoritmos 
ou invés de 
memorização
Quiz #6 
✓
Armadilhas: "to" versus "2" 
• cal_to_jd 
• ftok 
• idn_to_ascii 
• idn_to_unicode 
• idn_to_utf8 
• strtok 
• strtolower 
• strtotime 
• strtoupper 
• bin2hex 
• deg2rad 
• hex2bin 
• image2wbmp 
• ip2long 
• jpeg2wbmp 
• ldap_dn2ufn 
• ldap_err2str 
• long2ip 
• nl2br 
• png2wbmp 
• px_date2string 
• px_timestamp2string 
• rad2deg
Inconsistências: 
underscore 
Com underscore Sem underscore 
json_decode 
urldecode 
base64_decode 
gzdecode 
error_get_last 
func_get_arg 
fgetcsv 
gethostname 
str_pad 
str_split 
str_replace 
str_getcsv 
strlen 
strptime 
strrev 
stristr
Inconsistências: case 
insensitive – i versus 
case 
Case sensitive Case insensitive 
strpos stripos 
str_replace str_ireplace 
strcmp strcasecmp
Inconsistências: verbo 
versus objeto 
Objeto/verbo Verbo/objeto 
socket_read 
ldap_read 
readdir 
readfile 
date_parse 
xml_parse 
parse_str 
parse_url 
imap_check 
pspell_check 
checkdnsrr 
checkdate 
timezone_version_get 
realpath_cache_get 
ini_get 
getheaders 
getcwd 
getenv
Ordem de parâmetros 
• Ordem dos argumentos discrepante: 
array_map(callback, array) 
enquanto que 
array_filter(array, callback) 
• Anomalias na nomenclatura: 
bindtextdomain(domínio, diretório) 
bind_textdomain_codeset(domínio, codeset)
Quiz #7 
<?php 
if("um"==0){ 
echo "Verdadeiro"; 
} 
else { 
echo "Falso"; 
} 
?>
Type Juggling 
• PHP é uma linguagem fracamente tipada 
• Teste com == não compara os tipos de dados – 
diferentemente do === (idêntico). 
• Implicitamente o PHP realiza casting automático 
1) converte a string “um” em integer, resultando em 
inteiro 0 
• Consequentemente o teste 0==0 é verdadeiro. 
Ex.: 
var_dump(intval("um")); //int(0) 
var_dump(intval(0)); //int(0)
Quiz #8 
Qual a saída deste 
código? 
✓ 
A: 10111213 
B: 1011 
C: 101 
D: 12 
<?php 
class A { 
protected $a = 1; 
function a() { echo $this->a++; } 
} 
class B extends A { 
protected $a = 10; 
function b() { echo $this->a++; $this->a(); } 
} 
$b = new B; 
$b->b(); 
?> 
Retro-compatiblidade 
com PHP 4
Marcar para revisão 
• Priorize as questões mais curtas 
• Antes de realizar o teste de mesa, 
verifique se as chamadas de função estão 
com a sintaxe correta 
• Marque para revisão
Tela de revisão
Quiz #9 
Qual a saída do código a seguir: 
<?php 
function ExibeFilme($filme = ""){ 
if(8 == "8 Mile"){ 
$resultado = "Verdadeiro"; 
} 
else { 
$resultado = "Falso"; 
} 
echo $filme; 
} 
echo ExibeFilme(); 
?> 
A: Verdadeiro 
B: Falso 
C: Parse error 
D: (vazio) 
E: 8 Mile 
✓
“Existem 10 tipos de pessoas: a que 
entendem binário e as que não 
entendem”
Binário para decimal
Quiz #10 
$binario = 0b101010; //base 2 
$octal = 01234; //base 8 
$decimal ✓✓ 
= 1234; //base 10 
$hexadecimal = 0x1234; //base 16
ZCE (PHP 5.3)  ZCPE 
(PHP 5.5) 
• Built-in web server: php -S localhost:8080 
• Cronômetro de alta precisão: 
$_SERVER['REQUEST_TIME_FLOAT'] 
• Novas formas de manipulação de arrays 
$array2 = [1,2,3,4]; 
echo ObtemArray()[1]; 
• Class member access on instantiation: 
echo (new DateTime)->getTimestamp(); 
• http_response_code(404); 
• Traits 
• Formato binário: $bin = 0b11001; 
• Status de sessão: session_status(); 
• $this e use em Closures 
• Progresso de upload: session.upload_progress.enabled = On 
PHP 5.4
Quiz #11 
O método especialistas() retorna os desenvolvedores responsáveis por cada framework. 
De acordo com o código abaixo, como obter o especialista em ZendFramework2 “ZF2”? 
class Developers { 
public static function Especialistas(){ 
return [ 
'ZF2' => 'Ari Junior', 
'Laravel' => 'Michaelsen', 
'Code Igniter' => 'Oddy Silva', 
'Symfony' => 'Renato' 
]; 
} 
} 
Assinale as alternativas corretas: 
A) echo Developers::Especialistas()['ZF2']; 
B) echo (new Developers)->Especialistas()['ZF2']; 
C) $dev = new Developers; echo $dev->Especialistas()['ZF2']; 
D) Não pode instanciar pois o método Especialistas() é estático 
✓ 
✓ 
✓
Herança múltipla 
Algumas observações 
preliminares… 
• Herdar significa reutilizar atributos e métodos de 
uma classe ancestral 
• A classe filha leva TODA a herança 
• Pode-se controlar o que será herdado através 
do escopo de visibilidade 
• Na herança simples o reuso não é pleno, já que 
poderia fazer uso de recursos contidos em 
OUTRAS classes 
• Se houver a necessidade de herança múltipla, 
talvez possa indicar uma falha na modelagem
Deadly diamond of death 
PHP não implementa herança múltipla portanto evita 
o “Problema do Diamante”: que método usar se duas 
sub-classes possuem um recurso de mesmo nome 
que foi sobrescrito em ambas? 
Métodos sobrescritos de A 
Herança múltipla 
Qual usar? 
http://en.wikipedia.org/wiki/Diamond_problem
Cenário legítimo 
Nesse caso o método 
CargaDescarga (também útil na 
classe Transfer) deverá ser 
copiado 
✗
Traits 
• Promovem “herança horizontal” 
• Traits são usados ao invés de 
instanciados 
• Classes podem usar vários traits ao 
mesmo tempo (assim como as interfaces) 
• Traits podem conter outros traits 
• Podem ter atributos
<?php 
class Passeios { 
function PagaComissao(){ 
return "Paga comissao..."; 
} 
} 
trait Recursos { 
function CargaDescarga(){ 
return "Realiza carga e descarga"; 
} 
} 
class Transfer extends Passeios { 
use Recursos; 
} 
$obj = new Transfer; 
echo $obj->CargaDescarga(); 
?>
Resolução de conflitos 
<?php 
trait Colaborador { 
function PreencherOpinario(){ 
return "Opinario dos colaboradores"; 
} 
} 
trait Parceiro { 
function PreencherOpinario(){ 
return "Opinario dos parceiros"; 
} 
} 
trait Cliente { 
function PreencherOpinario(){ 
return "Opinario dos clientes"; 
} 
} 
class Estagiario { 
use Colaborador, Parceiro, Cliente; 
} 
$obj = new Estagiario; 
echo $obj->PreencherOpinario(); 
?> 
Fatal error: Trait method PreencherOpinario has 
not been applied, because there are collisions 
with other trait methods on Estagiario in…
Traits: resolução de conflitos 
class Estagiario { 
use Colaborador, Parceiro, Cliente { 
Colaborador::PreencherOpinario insteadof Parceiro, 
Cliente; 
} 
} 
class Estagiario { 
use Colaborador, Parceiro, Cliente { 
Colaborador::PreencherOpinario insteadof Parceiro, 
Cliente; 
Parceiro::PreencherOpinario as OpinarioSimplificado; 
} 
} 
A ordem de uso dos métodos é: 
①da própria classe 
②do Trait 
③da classe pai
Quiz #12 
Qual a saída do código PHP a seguir: 
<?php 
trait Colaborador { 
function PreencherOpinario(){ 
return "colaboradores"; 
} 
} 
class Pessoa { 
function PreencherOpinario(){ 
return "generico"; 
} 
} 
class Estagiario extends Pessoa{ 
use Colaborador; 
function PreencherOpinario(){ 
return "estagiarios"; 
} 
} 
$colega = new Estagiario; 
echo $colega->PreencherOpinario(); 
?> 
|
ZCE (PHP 5.3)  ZCPE 
(PHP 5.5) 
• Opcode Cache 
zend_extension=opcache.so 
opcache.enable=1 
• Iteração com generators (yield ) 
• API para hashing de senha: password_hash("senha", 
PASSWORD_BCRYPT); 
• try, catch e finally: 
PHP 5.5 
bloqueia tabela 
try { 
escreve no banco de dados 
desbloqueia tabela 
} 
catch exceção { 
reporta problemas 
desbloqueia tabela 
} 
Código redundante 
bloqueia tabela 
try { 
escreve no banco de dados 
} 
catch exceção { 
reporta problemas 
} 
finally { 
desbloqueia tabela 
}
Preparatório 
• Zend PHP 5.3 Certification Training ministrado pelo instrutor Doug 
Bierer: http://static.zend.com/topics/videos/training/php-5-3-cert-introduction/ 
• Test Prep: PHP Certification - online (9 encontros de 2 horas cada) 
http://www.zend.com/en/services/training/php-5-cert 
US$ 1.000 
• Test Prep: PHP Certification - recorded Sessions (7 horas no total) 
http://www.zend.com/en/services/training/php-certification-course 
US$ 499 
Doug Bierer
Disciplina
Lista de discussão: 
Rumo à certificação PHP 
www.rumoacertificacaophp.com 
• Criada por Renington Neri em 31/07/2010 
• Atualmente com 1050 membros 
• Ficou conhecida pela “Pergunta do dia” 
• Hoje, dia 7/nov, foi publicada a pergunta de nº 
1.544 
• Grupo no Facebook: 
– http://www.facebook.com/groups/434330716587 
436/ Primeiro logo, criado por 
Gustavo Pereira 
Ari e Gustavo – nov/2013 em Osasco (SP)
Recomendada pela 
própria Zend!
Frutos 
Podcast http://www.zcebrasil.com mantido 
por Nanderson Castro 
Nanderson e Ari – nov/2013 em Osasco (SP)
Conquistas recentes 
• Cupons de 20% desconto na compra do 
voucher para os exames "Zend Certified 
PHP Engineer" (ZCPE) e "Zend 
Framework 2 Certified Architect" (ZFCA) 
• O mais recente expirou em 30/setembro: 
Bra20phpzf14 
• Dezenas de cupons vendidos – a maioria 
para membros do nosso grupo
Livros 
• Rumo à Certificação PHP por Kinn 
Coelho Julião 
<kinncj@php.net>https://leanpub.com 
/rumoacertificaophp 
• Certification PHP 5.5: Zend 
Certified PHP Engineer por Cyrille 
Grandval e Julien Charpentier 
• Em breve, pela editora Novatec 
coming soon… Ari e Cyrille – jul/2014 em Gramado (RS)
Camisetas: development
Camisetas: build
Camisetas: deploy 
Joe Stagner @misfitgeek e Ana Maria Valarezo @ana_mvalarezo, ambos da Zend
elePHPant 
http://www.elephpant.com
App para Android - autoria de Fabricio Bedeschi: 
fabricio.bedeschi@gmail.com 
https://play.google.com/store/apps/details?id=com.quiz.php 
https://github.com/fabriciobrag/android-quiz-php
TCC de graduação em Informática 
por João Paulo Cercal 
jpcercal@gmail.com 
http://zcpe.cekurte.com
Logotipo feito cordialmente pelo 
francês Vincent Pontier – criador do 
elePHPant (mascote oficial do PHP) 
@Elroubio
Meeting com Matthew 
Weier O'Phinney 
Líder do ZendFramework, líder do projeto APIgility e tantos outros: 
https://mwop.net 
ZCE (PHP 5.3), ZCPE (PHP 5.5), ZendFramework Certified, Linux Foundation Certified, CompTIA Linux+, LPI Linux 
Essentials, LPIC-1, certificado Novell e outras mais: 
http://www.zend.com/en/yellow-pages/ZEND023069
TDC 2014 
Palestra de Leonardo Sápiras na trilha "Stadium" (auditório principal) no TDC Porto Alegre 2014. 
Apresentação intitulada "PHP: adquirindo experiência e qualificação em projetos internacionais". Assista em: 
http://www.globalcode.com.br/videos/tdc-2014-portoalegre/sexta/php-experiencia-e-qualificacao-projetos-internacionais
Pasta compartilhada no 
DropBox e no GoogleDrive 
Pedidos diretamente ao nosso "guardião" das pastas 
compartilhadas: 
Gustavo Pereira <gustavoper@gmail.com>
Roteiro 
• Livro “PHP Programando com Orientação a Objetos” do 
autor Pablo 
Dall'Oglio:http://www.novatec.com.br/livros/phpobjetos2/ 
• Vídeo-aulas da Lynda e Udemy 
• Livros clássicos (embora obsoletos em alguns aspectos) 
• Analisar todas as "Perguntas do dia" da lista "Rumo à 
Certificação PHP" http://rumoacertificacaophp.com/ 
Tempo 
US$ 
19,95
Simulados e Apps
Certificamp 
• Inspirado no http://www.bignerdranch.com 
• "Acampamento" de estudos para a certificação 
PHP 
• Curso itinerante, presencial e de imersão 
• Preparatório para o exame "Zend Certified PHP 
Engineer" (ZCPE PHP 5.5) 
• Realizado em 2 dias com carga horária de 16h 
• https://www.facebook.com/certificamp 
• https://www.twitter.com/certificamp
Bingo! 
Quiz # Resposta 
1 111111 
2 B (5) 
3 A e D 
4 __autoload 
5 abstract 
6 E 
7 Falso 
8 10111213 
9 (vazio) 
10 42 
11 A, B e C 
12 estagiarios
Contatos 
E-mail: 
arijunior@gmail.com 
Twitter: @stopassola 
Skype: stopassola 
LinkedIn: 
http://pt.linkedin.com/in/stopassola 
Facebook: 
http://www.facebook.com/arijunior 
Sites: 
http://www.perito.inf.br 
http://www.rumoacertificacaophp.com

Contenu connexe

Tendances

What is a Rainbow Table?
What is a Rainbow Table?What is a Rainbow Table?
What is a Rainbow Table?Vahid Saffarian
 
MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要Naohiro Fujie
 
Şifreleme Teknikleri ve SSL
Şifreleme Teknikleri ve SSLŞifreleme Teknikleri ve SSL
Şifreleme Teknikleri ve SSLTolga ÇELİK
 
認証サービスへのWebAuthnの導入
認証サービスへのWebAuthnの導入認証サービスへのWebAuthnの導入
認証サービスへのWebAuthnの導入TakashiTsukamoto4
 
OAuth & OpenID Connect Deep Dive
OAuth & OpenID Connect Deep DiveOAuth & OpenID Connect Deep Dive
OAuth & OpenID Connect Deep DiveNordic APIs
 
認証から見たリモート署名 ー利用認証と鍵認可ー
認証から見たリモート署名 ー利用認証と鍵認可ー認証から見たリモート署名 ー利用認証と鍵認可ー
認証から見たリモート署名 ー利用認証と鍵認可ーNaoto Miyachi
 
PCI Express Verification using Reference Modeling
PCI Express Verification using Reference ModelingPCI Express Verification using Reference Modeling
PCI Express Verification using Reference ModelingDVClub
 
Modern Authentication -- FIDO2 Web Authentication (WebAuthn) を学ぶ --
Modern Authentication -- FIDO2 Web Authentication (WebAuthn) を学ぶ --Modern Authentication -- FIDO2 Web Authentication (WebAuthn) を学ぶ --
Modern Authentication -- FIDO2 Web Authentication (WebAuthn) を学ぶ --Jun Kurihara
 
俺が考えた最強のID連携デザインパターン
俺が考えた最強のID連携デザインパターン俺が考えた最強のID連携デザインパターン
俺が考えた最強のID連携デザインパターンMasaru Kurahayashi
 
Oppimisen varmistaminen digiohjauksen ja palautteen avulla
Oppimisen varmistaminen digiohjauksen ja palautteen avullaOppimisen varmistaminen digiohjauksen ja palautteen avulla
Oppimisen varmistaminen digiohjauksen ja palautteen avullaHarto Pönkä
 
Digital signature(Cryptography)
Digital signature(Cryptography)Digital signature(Cryptography)
Digital signature(Cryptography)Soham Kansodaria
 
Curso: Seguridad física y criptografía: Algoritmo DES
Curso: Seguridad física y criptografía: Algoritmo DESCurso: Seguridad física y criptografía: Algoritmo DES
Curso: Seguridad física y criptografía: Algoritmo DESJack Daniel Cáceres Meza
 
End to End Encryption in 10 minutes -
End to End Encryption in 10 minutes - End to End Encryption in 10 minutes -
End to End Encryption in 10 minutes - Thomas Seropian
 
OpenID Connect のビジネスチャンス
OpenID Connect のビジネスチャンスOpenID Connect のビジネスチャンス
OpenID Connect のビジネスチャンスOpenID Foundation Japan
 
英国オープンバンキング技術仕様の概要
英国オープンバンキング技術仕様の概要英国オープンバンキング技術仕様の概要
英国オープンバンキング技術仕様の概要Tatsuo Kudo
 
Evaluating UCIe based multi-die SoC to meet timing and power
Evaluating UCIe based multi-die SoC to meet timing and power Evaluating UCIe based multi-die SoC to meet timing and power
Evaluating UCIe based multi-die SoC to meet timing and power Deepak Shankar
 
SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)Naohiro Fujie
 
Customer Presentation - Northern Trust
Customer Presentation - Northern TrustCustomer Presentation - Northern Trust
Customer Presentation - Northern TrustSplunk
 
SCIM in the Real World: Adoption is Growing
SCIM in the Real World: Adoption is GrowingSCIM in the Real World: Adoption is Growing
SCIM in the Real World: Adoption is GrowingKelly Grizzle
 

Tendances (20)

What is a Rainbow Table?
What is a Rainbow Table?What is a Rainbow Table?
What is a Rainbow Table?
 
MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要
 
Şifreleme Teknikleri ve SSL
Şifreleme Teknikleri ve SSLŞifreleme Teknikleri ve SSL
Şifreleme Teknikleri ve SSL
 
認証サービスへのWebAuthnの導入
認証サービスへのWebAuthnの導入認証サービスへのWebAuthnの導入
認証サービスへのWebAuthnの導入
 
OAuth & OpenID Connect Deep Dive
OAuth & OpenID Connect Deep DiveOAuth & OpenID Connect Deep Dive
OAuth & OpenID Connect Deep Dive
 
認証から見たリモート署名 ー利用認証と鍵認可ー
認証から見たリモート署名 ー利用認証と鍵認可ー認証から見たリモート署名 ー利用認証と鍵認可ー
認証から見たリモート署名 ー利用認証と鍵認可ー
 
PCI Express Verification using Reference Modeling
PCI Express Verification using Reference ModelingPCI Express Verification using Reference Modeling
PCI Express Verification using Reference Modeling
 
Modern Authentication -- FIDO2 Web Authentication (WebAuthn) を学ぶ --
Modern Authentication -- FIDO2 Web Authentication (WebAuthn) を学ぶ --Modern Authentication -- FIDO2 Web Authentication (WebAuthn) を学ぶ --
Modern Authentication -- FIDO2 Web Authentication (WebAuthn) を学ぶ --
 
俺が考えた最強のID連携デザインパターン
俺が考えた最強のID連携デザインパターン俺が考えた最強のID連携デザインパターン
俺が考えた最強のID連携デザインパターン
 
Oppimisen varmistaminen digiohjauksen ja palautteen avulla
Oppimisen varmistaminen digiohjauksen ja palautteen avullaOppimisen varmistaminen digiohjauksen ja palautteen avulla
Oppimisen varmistaminen digiohjauksen ja palautteen avulla
 
暗認本読書会5
暗認本読書会5暗認本読書会5
暗認本読書会5
 
Digital signature(Cryptography)
Digital signature(Cryptography)Digital signature(Cryptography)
Digital signature(Cryptography)
 
Curso: Seguridad física y criptografía: Algoritmo DES
Curso: Seguridad física y criptografía: Algoritmo DESCurso: Seguridad física y criptografía: Algoritmo DES
Curso: Seguridad física y criptografía: Algoritmo DES
 
End to End Encryption in 10 minutes -
End to End Encryption in 10 minutes - End to End Encryption in 10 minutes -
End to End Encryption in 10 minutes -
 
OpenID Connect のビジネスチャンス
OpenID Connect のビジネスチャンスOpenID Connect のビジネスチャンス
OpenID Connect のビジネスチャンス
 
英国オープンバンキング技術仕様の概要
英国オープンバンキング技術仕様の概要英国オープンバンキング技術仕様の概要
英国オープンバンキング技術仕様の概要
 
Evaluating UCIe based multi-die SoC to meet timing and power
Evaluating UCIe based multi-die SoC to meet timing and power Evaluating UCIe based multi-die SoC to meet timing and power
Evaluating UCIe based multi-die SoC to meet timing and power
 
SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)
 
Customer Presentation - Northern Trust
Customer Presentation - Northern TrustCustomer Presentation - Northern Trust
Customer Presentation - Northern Trust
 
SCIM in the Real World: Adoption is Growing
SCIM in the Real World: Adoption is GrowingSCIM in the Real World: Adoption is Growing
SCIM in the Real World: Adoption is Growing
 

En vedette

Preparando-se para a prova da Certificação Zend PHP 5.3
Preparando-se para a prova da Certificação Zend PHP 5.3Preparando-se para a prova da Certificação Zend PHP 5.3
Preparando-se para a prova da Certificação Zend PHP 5.3klaussilveira
 
Segurança em Aplicações Web com PHP
Segurança em Aplicações Web com PHPSegurança em Aplicações Web com PHP
Segurança em Aplicações Web com PHPGedvan Dias
 
DevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na práticaDevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na práticaAri Stopassola Junior
 
QGIS 2.8: Classificação de Campos com Python
QGIS 2.8: Classificação de Campos com PythonQGIS 2.8: Classificação de Campos com Python
QGIS 2.8: Classificação de Campos com PythonJorge Santos
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do GoogleLuciano Ramalho
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHPPaulo Dayvson
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHPAugusto Pascutti
 
Exercicios Php
Exercicios PhpExercicios Php
Exercicios Phpsofteam
 
Curso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP BásicoCurso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP BásicoNorton Guimarães
 
Lista de exercícios resolvidos
Lista de exercícios resolvidosLista de exercícios resolvidos
Lista de exercícios resolvidosCrishna Irion
 
Todos os passos para a certificação PHP - PHPExperience2017
Todos os passos para a certificação PHP - PHPExperience2017 Todos os passos para a certificação PHP - PHPExperience2017
Todos os passos para a certificação PHP - PHPExperience2017 Matheus Marabesi
 

En vedette (15)

Preparando-se para a prova da Certificação Zend PHP 5.3
Preparando-se para a prova da Certificação Zend PHP 5.3Preparando-se para a prova da Certificação Zend PHP 5.3
Preparando-se para a prova da Certificação Zend PHP 5.3
 
Doctrine for Dummies
Doctrine for DummiesDoctrine for Dummies
Doctrine for Dummies
 
Segurança em Aplicações Web com PHP
Segurança em Aplicações Web com PHPSegurança em Aplicações Web com PHP
Segurança em Aplicações Web com PHP
 
DevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na práticaDevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na prática
 
Python
PythonPython
Python
 
QGIS 2.8: Classificação de Campos com Python
QGIS 2.8: Classificação de Campos com PythonQGIS 2.8: Classificação de Campos com Python
QGIS 2.8: Classificação de Campos com Python
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do Google
 
Certificacao Php
Certificacao PhpCertificacao Php
Certificacao Php
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHP
 
Exercicios Php
Exercicios PhpExercicios Php
Exercicios Php
 
Curso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP BásicoCurso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP Básico
 
Lista de exercícios resolvidos
Lista de exercícios resolvidosLista de exercícios resolvidos
Lista de exercícios resolvidos
 
Todos os passos para a certificação PHP - PHPExperience2017
Todos os passos para a certificação PHP - PHPExperience2017 Todos os passos para a certificação PHP - PHPExperience2017
Todos os passos para a certificação PHP - PHPExperience2017
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 

Similaire à Rumo à Certificação PHP

PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPPHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPiMasters
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2PrinceGuru MS
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de softwarericardophp
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super heroElton Minetto
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitDiego Tremper
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDouglas V. Pasqua
 
PHPSP TestFest 2010
PHPSP TestFest 2010PHPSP TestFest 2010
PHPSP TestFest 2010Rafael Dohms
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Jaime Neto
 
Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?Elaine Naomi
 
Php Test Fest PHPMS, Maio 2008
Php Test Fest PHPMS, Maio 2008Php Test Fest PHPMS, Maio 2008
Php Test Fest PHPMS, Maio 2008zehzinho
 
Objects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do códigoObjects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do códigoBonoBee
 
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...Rafael Jaques
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetMarcos Petry
 

Similaire à Rumo à Certificação PHP (20)

PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPPHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
 
Sapo Sessions PHP
Sapo Sessions PHPSapo Sessions PHP
Sapo Sessions PHP
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de software
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super hero
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
PHP(I-Bim).ppt
PHP(I-Bim).pptPHP(I-Bim).ppt
PHP(I-Bim).ppt
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHP
 
PHPSP TestFest 2010
PHPSP TestFest 2010PHPSP TestFest 2010
PHPSP TestFest 2010
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?
 
Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?
 
Ap 04 05_10
Ap 04 05_10Ap 04 05_10
Ap 04 05_10
 
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
 
Php Test Fest PHPMS, Maio 2008
Php Test Fest PHPMS, Maio 2008Php Test Fest PHPMS, Maio 2008
Php Test Fest PHPMS, Maio 2008
 
PHP, Mercado e Certificações
PHP, Mercado e CertificaçõesPHP, Mercado e Certificações
PHP, Mercado e Certificações
 
Objects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do códigoObjects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do código
 
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internet
 

Plus de Ari Stopassola Junior (10)

Doctrine for dummies
Doctrine for dummiesDoctrine for dummies
Doctrine for dummies
 
PHP Community Spirit
PHP Community SpiritPHP Community Spirit
PHP Community Spirit
 
Modern PHP
Modern PHPModern PHP
Modern PHP
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDB
 
Ti na Stopassola Advocacia
Ti na Stopassola AdvocaciaTi na Stopassola Advocacia
Ti na Stopassola Advocacia
 
Workshop Magento
Workshop MagentoWorkshop Magento
Workshop Magento
 
Typo3 - instalação e template
Typo3 - instalação e templateTypo3 - instalação e template
Typo3 - instalação e template
 
Missao Portugal
Missao PortugalMissao Portugal
Missao Portugal
 
Treinamento PHP: Strings & Patterns
Treinamento PHP: Strings & PatternsTreinamento PHP: Strings & Patterns
Treinamento PHP: Strings & Patterns
 

Rumo à Certificação PHP

  • 1. Rumo à certificação PHP Ari Stopassola Junior
  • 2. Ari Stopassola Junior Bacharel em Informática com ênfase em Análise de Sistemas pela Unisinos, cursou mestrado em Engenharia Informática e de Computadores pelo Instituto Superior Técnico da Universidade Técnica de Lisboa (Portugal), perito judicial 'ad hoc' especializado em TI (mantenedor do site PERITO.inf.br), Zend Certified Engineer (PHP 5.3) e Zend Certified PHP Engineer (PHP 5.5) #ZEND004019, Certified ScrumMaster pela Scrum Alliance #203613, Microsoft Certified Professional (MCP), consultor web e PHP evangelist.
  • 3.
  • 4. Certificações PHP • CP-470 PHP – National Computer Science Academy (NCSA) http://www.ncsacademy.com/certification/php.cfm • W3Schools http://www.w3schools.com/cert/cert_php.asp • Brainbench • "Zend Certified PHP Engineer" (ZCPE PHP 5.5), promovida pela Zend Technologies Ltd. A mais prestigiada!
  • 5. Vantagens • Prestígio e reconhecimento junto a comunidade • Processo rigoroso de aprovação • Demonstra maturidade e proficiência na linguagem • Permissão para uso dos logotipos oficiais nos cartões de visita • Ganha uma licença perpétua do editor Zend Studio (versão vigente) • Visibilidade internacional através da “Zend Certified Engineer Directory”, antigamente conhecida como “Yellow Pages” • Diferencial e bonificações salariais • Descontos em conferências Zend • O título ZCE/ZCPE não expira! • Acesso a grupos exclusivos • Oportunidades de outsourcing
  • 7. Estatísticas: Yellow Pages Até o momento (outubro/2014) há somente 369 profissionais certificados ZCE/ZCPE no Brasil: http://www.zend.com/en/services/certification/zend-certified-engineer-directory http://www.zend.com/en/yellow-pages/ZEND004019
  • 8. Logotipo para empresas que desejam contratar profissionais ZCPE Desconto na compra de vouchers acima de 10 unidades: sales@zend.com
  • 9. Preço e cupons de desconto http://www.softwarediscountcodes.com/zend-phpcertification. html 7 a 10% http://www.softwarevouchers.com/zend-phpcertifications.html http://www.retailmenot.com/view/zend.com • Havia um bug no site onde o preço nos EUA (atribuído em dólar) era o mesmo valor da Europa (porém em euros, mais oneroso) http://shop.zend.com/eu/php-certification.html €170.00 http://shop.zend.com/en/php-certification.html $195.00
  • 10. Conta na Zend: http://shop.zend.com
  • 12. Idioma Na versão 5.5 existe apenas o inglês. Nas vesões anteriores, havia a possibilidade de escolher entre: alemão, francês, inglês e japonês.
  • 16. Usando o voucher da Zend Algo como: ZTPB379B231A
  • 19. Zend Education Advisory Board Fonte: http://www.zend.com/services/certification/php-5-certification/education-advisory-board
  • 20. Dia da prova • A PearsonVUE recomenda que você chegue UMA hora antes • Leve DOIS documentos oficiais identificadores com foto, para evitar fraudes • Esteja hidratado • Não é permitido levar qualquer material – eles ficam armazenados num armário chaveado • Não é permitido levantar-se no decorrer do exame. Ida ao banheiro é controlada
  • 21. Itens permitidos • Eraseable board (quadro apagável) • Protetor auricular Fonte: http://www.gedtestingservice.com/testers/noteboards • Sua conduta é monitorada o tempo todo • Qualquer suspeita de irregularidade, sua prova é invalidada
  • 22. Quiz #1 Eraseable board <?php interface i1 {} interface i2 extends i1 {} interface i3 {} class c1 {} class c2 extends c1 {} class c3 extends c2 implements i2, i3 {} $c3 = new C3(); echo $c3 instanceof c1; echo $c3 instanceof c2; echo $c3 instanceof c3; echo $c3 instanceof i1; echo $c3 instanceof i2; echo $c3 instanceof i3; ?> |
  • 23. Reagendamento • Pode-se reagendar quantas vezes quiser durante UM ano, através do site http://www.pearsonvue.com • No mínimo 48 horas de antecedência • Sem custo adicional • Porém, há um efeito colateral…
  • 25. Estrutura do exame • 70 perguntas randômicas • Limite de 90 minutos para respondê-las • ≅1 minuto e 17 segundos por questão! • Caráter neutro • Jamais se repetem • Distribuídas entre os dez tópicos • Tem mesmo peso • Respostas incorretas não geram penalidades
  • 26. O que NÃO cai Classes ou extensões externas provenientes da PEAR/Pyrus ou PECL (CodeSniffer, PhpDocumentor, xDebug, profiler, GD, Phing, fPDF), ou vindo de outros repositórios como a PHPUnit, Composer (gerenciador de dependências), Suhosin (sistema de segurança em PHP), sistemas para controle de versão (CVS, Subversion, Git, Mercurial), empacotamento PHAR, procedimentos para Integração Contínua com Jenkins (e seus módulos como PHPMD-MessDetector, DRY-Copy&Paste Detector, PHP_Depend), sistema de templates (Smarty e Twig), PHP-GTK, Frameworks (CakePHP, CodeIgniter, Symfony, ZendFramework, YII, Prado), CMS (Typo3, Wordpress, Joomla!, Drupal), sistemas especializados (Magento, SugarCRM ou phpMyAdmin), editores (ZendStudio, NetBeans, PDT, Aptana, PhpED), mecanismos de cache (APC, Memcache e Gearman), ORM (Propel ou Doctrine), funções SQL específicas de algum banco de dados (que não sejam ANSI SQL), bases NoSQL e ferramentas Zend como Zend Optimizer+, Zend Java Bridge, Zend Guard Loader e outros.
  • 27. FAIL “Certification Exam Retakes”. Para mais informações escreva: certification@zend.com
  • 31.
  • 32.
  • 33.
  • 34. Dez tópicos • Fundamentos do PHP • Funções • Formato de dados e tipos • Recursos Web • Programação Orientada à Objetos • Segurança • I/O (Entrada e Saída) • Strings e Padrões • Banco de Dados • Arrays
  • 35. Enunciados • Não há syntax highlight • O algoritmo é sempre na linguagem PHP – não exibem pseudocódigos • Podem conter imagens para ilustrar (geralmente alguma tabela de BD, diagrama UML etc) • Independem de Sistema Operacional e Sistema Gerenciador de Banco de Dados (SGBD) • O teste também aborda, indiretamente, HTTP e SQL (Structured Query Language), XML (XPath) e JSON • Nem sempre eles estarão em blocos terminados em ?>, a menos que haja HTML (ou JavaScript) embedded • Pode fazer referência ao Apache (servidor de aplicação)
  • 37. LEFT JOIN SELECT names.name,emails.email FROM names LEFT JOIN emails ON emails.id=names.id; names emails Prioriza a tabela da “esquerda”, que foi referenciada primeiro. Ou seja: permite que uma das tabelas (names) retorne linhas mesmo que não haja equivalência na outra tabela (emails).
  • 39. Quiz #4 Preencha o espaço em branco com o nome adequado. A função _____________ __autoload() chama automaticamente os recursos necessários sempre que um usuário tenta instanciar uma classe inexistente. Nomes de funções devem ser escritas em caixa baixa (lowercase), sem espaços em branco, nem explicações ou comentários. Com ou sem parênteses.
  • 40. Resposta: campo aberto • É um tipo de pergunta menos frequente • Recebe: – Nomes de funções/métodos/classes – Conteúdo de variáveis – Saída de código – Pequenos trechos (snippets) – Tipos de erro: Notice, Warning ou Fatal error – Nome de constantes – Cláusula do php.ini
  • 42. Cláusulas padrão do php.ini • register_globals = Off • magic_quotes_gpc = Off • error_reporting = E_ALL • display_errors = On Lembrando que as diretivas podem ser indicadas por 1 e 0, respectivamente On e Off. Ex.: asp_tags = 0 (representa “Off”, desligado).
  • 43. 5 MIL funções Devo mentalizar todas elas? E a ordem de parâmetros? O foco do teste é em análise de algoritmos ou invés de memorização
  • 45. Armadilhas: "to" versus "2" • cal_to_jd • ftok • idn_to_ascii • idn_to_unicode • idn_to_utf8 • strtok • strtolower • strtotime • strtoupper • bin2hex • deg2rad • hex2bin • image2wbmp • ip2long • jpeg2wbmp • ldap_dn2ufn • ldap_err2str • long2ip • nl2br • png2wbmp • px_date2string • px_timestamp2string • rad2deg
  • 46. Inconsistências: underscore Com underscore Sem underscore json_decode urldecode base64_decode gzdecode error_get_last func_get_arg fgetcsv gethostname str_pad str_split str_replace str_getcsv strlen strptime strrev stristr
  • 47. Inconsistências: case insensitive – i versus case Case sensitive Case insensitive strpos stripos str_replace str_ireplace strcmp strcasecmp
  • 48. Inconsistências: verbo versus objeto Objeto/verbo Verbo/objeto socket_read ldap_read readdir readfile date_parse xml_parse parse_str parse_url imap_check pspell_check checkdnsrr checkdate timezone_version_get realpath_cache_get ini_get getheaders getcwd getenv
  • 49. Ordem de parâmetros • Ordem dos argumentos discrepante: array_map(callback, array) enquanto que array_filter(array, callback) • Anomalias na nomenclatura: bindtextdomain(domínio, diretório) bind_textdomain_codeset(domínio, codeset)
  • 50. Quiz #7 <?php if("um"==0){ echo "Verdadeiro"; } else { echo "Falso"; } ?>
  • 51. Type Juggling • PHP é uma linguagem fracamente tipada • Teste com == não compara os tipos de dados – diferentemente do === (idêntico). • Implicitamente o PHP realiza casting automático 1) converte a string “um” em integer, resultando em inteiro 0 • Consequentemente o teste 0==0 é verdadeiro. Ex.: var_dump(intval("um")); //int(0) var_dump(intval(0)); //int(0)
  • 52. Quiz #8 Qual a saída deste código? ✓ A: 10111213 B: 1011 C: 101 D: 12 <?php class A { protected $a = 1; function a() { echo $this->a++; } } class B extends A { protected $a = 10; function b() { echo $this->a++; $this->a(); } } $b = new B; $b->b(); ?> Retro-compatiblidade com PHP 4
  • 53. Marcar para revisão • Priorize as questões mais curtas • Antes de realizar o teste de mesa, verifique se as chamadas de função estão com a sintaxe correta • Marque para revisão
  • 55. Quiz #9 Qual a saída do código a seguir: <?php function ExibeFilme($filme = ""){ if(8 == "8 Mile"){ $resultado = "Verdadeiro"; } else { $resultado = "Falso"; } echo $filme; } echo ExibeFilme(); ?> A: Verdadeiro B: Falso C: Parse error D: (vazio) E: 8 Mile ✓
  • 56. “Existem 10 tipos de pessoas: a que entendem binário e as que não entendem”
  • 58. Quiz #10 $binario = 0b101010; //base 2 $octal = 01234; //base 8 $decimal ✓✓ = 1234; //base 10 $hexadecimal = 0x1234; //base 16
  • 59. ZCE (PHP 5.3)  ZCPE (PHP 5.5) • Built-in web server: php -S localhost:8080 • Cronômetro de alta precisão: $_SERVER['REQUEST_TIME_FLOAT'] • Novas formas de manipulação de arrays $array2 = [1,2,3,4]; echo ObtemArray()[1]; • Class member access on instantiation: echo (new DateTime)->getTimestamp(); • http_response_code(404); • Traits • Formato binário: $bin = 0b11001; • Status de sessão: session_status(); • $this e use em Closures • Progresso de upload: session.upload_progress.enabled = On PHP 5.4
  • 60. Quiz #11 O método especialistas() retorna os desenvolvedores responsáveis por cada framework. De acordo com o código abaixo, como obter o especialista em ZendFramework2 “ZF2”? class Developers { public static function Especialistas(){ return [ 'ZF2' => 'Ari Junior', 'Laravel' => 'Michaelsen', 'Code Igniter' => 'Oddy Silva', 'Symfony' => 'Renato' ]; } } Assinale as alternativas corretas: A) echo Developers::Especialistas()['ZF2']; B) echo (new Developers)->Especialistas()['ZF2']; C) $dev = new Developers; echo $dev->Especialistas()['ZF2']; D) Não pode instanciar pois o método Especialistas() é estático ✓ ✓ ✓
  • 61. Herança múltipla Algumas observações preliminares… • Herdar significa reutilizar atributos e métodos de uma classe ancestral • A classe filha leva TODA a herança • Pode-se controlar o que será herdado através do escopo de visibilidade • Na herança simples o reuso não é pleno, já que poderia fazer uso de recursos contidos em OUTRAS classes • Se houver a necessidade de herança múltipla, talvez possa indicar uma falha na modelagem
  • 62. Deadly diamond of death PHP não implementa herança múltipla portanto evita o “Problema do Diamante”: que método usar se duas sub-classes possuem um recurso de mesmo nome que foi sobrescrito em ambas? Métodos sobrescritos de A Herança múltipla Qual usar? http://en.wikipedia.org/wiki/Diamond_problem
  • 63. Cenário legítimo Nesse caso o método CargaDescarga (também útil na classe Transfer) deverá ser copiado ✗
  • 64. Traits • Promovem “herança horizontal” • Traits são usados ao invés de instanciados • Classes podem usar vários traits ao mesmo tempo (assim como as interfaces) • Traits podem conter outros traits • Podem ter atributos
  • 65. <?php class Passeios { function PagaComissao(){ return "Paga comissao..."; } } trait Recursos { function CargaDescarga(){ return "Realiza carga e descarga"; } } class Transfer extends Passeios { use Recursos; } $obj = new Transfer; echo $obj->CargaDescarga(); ?>
  • 66. Resolução de conflitos <?php trait Colaborador { function PreencherOpinario(){ return "Opinario dos colaboradores"; } } trait Parceiro { function PreencherOpinario(){ return "Opinario dos parceiros"; } } trait Cliente { function PreencherOpinario(){ return "Opinario dos clientes"; } } class Estagiario { use Colaborador, Parceiro, Cliente; } $obj = new Estagiario; echo $obj->PreencherOpinario(); ?> Fatal error: Trait method PreencherOpinario has not been applied, because there are collisions with other trait methods on Estagiario in…
  • 67. Traits: resolução de conflitos class Estagiario { use Colaborador, Parceiro, Cliente { Colaborador::PreencherOpinario insteadof Parceiro, Cliente; } } class Estagiario { use Colaborador, Parceiro, Cliente { Colaborador::PreencherOpinario insteadof Parceiro, Cliente; Parceiro::PreencherOpinario as OpinarioSimplificado; } } A ordem de uso dos métodos é: ①da própria classe ②do Trait ③da classe pai
  • 68. Quiz #12 Qual a saída do código PHP a seguir: <?php trait Colaborador { function PreencherOpinario(){ return "colaboradores"; } } class Pessoa { function PreencherOpinario(){ return "generico"; } } class Estagiario extends Pessoa{ use Colaborador; function PreencherOpinario(){ return "estagiarios"; } } $colega = new Estagiario; echo $colega->PreencherOpinario(); ?> |
  • 69. ZCE (PHP 5.3)  ZCPE (PHP 5.5) • Opcode Cache zend_extension=opcache.so opcache.enable=1 • Iteração com generators (yield ) • API para hashing de senha: password_hash("senha", PASSWORD_BCRYPT); • try, catch e finally: PHP 5.5 bloqueia tabela try { escreve no banco de dados desbloqueia tabela } catch exceção { reporta problemas desbloqueia tabela } Código redundante bloqueia tabela try { escreve no banco de dados } catch exceção { reporta problemas } finally { desbloqueia tabela }
  • 70. Preparatório • Zend PHP 5.3 Certification Training ministrado pelo instrutor Doug Bierer: http://static.zend.com/topics/videos/training/php-5-3-cert-introduction/ • Test Prep: PHP Certification - online (9 encontros de 2 horas cada) http://www.zend.com/en/services/training/php-5-cert US$ 1.000 • Test Prep: PHP Certification - recorded Sessions (7 horas no total) http://www.zend.com/en/services/training/php-certification-course US$ 499 Doug Bierer
  • 72. Lista de discussão: Rumo à certificação PHP www.rumoacertificacaophp.com • Criada por Renington Neri em 31/07/2010 • Atualmente com 1050 membros • Ficou conhecida pela “Pergunta do dia” • Hoje, dia 7/nov, foi publicada a pergunta de nº 1.544 • Grupo no Facebook: – http://www.facebook.com/groups/434330716587 436/ Primeiro logo, criado por Gustavo Pereira Ari e Gustavo – nov/2013 em Osasco (SP)
  • 74. Frutos Podcast http://www.zcebrasil.com mantido por Nanderson Castro Nanderson e Ari – nov/2013 em Osasco (SP)
  • 75. Conquistas recentes • Cupons de 20% desconto na compra do voucher para os exames "Zend Certified PHP Engineer" (ZCPE) e "Zend Framework 2 Certified Architect" (ZFCA) • O mais recente expirou em 30/setembro: Bra20phpzf14 • Dezenas de cupons vendidos – a maioria para membros do nosso grupo
  • 76. Livros • Rumo à Certificação PHP por Kinn Coelho Julião <kinncj@php.net>https://leanpub.com /rumoacertificaophp • Certification PHP 5.5: Zend Certified PHP Engineer por Cyrille Grandval e Julien Charpentier • Em breve, pela editora Novatec coming soon… Ari e Cyrille – jul/2014 em Gramado (RS)
  • 79. Camisetas: deploy Joe Stagner @misfitgeek e Ana Maria Valarezo @ana_mvalarezo, ambos da Zend
  • 81. App para Android - autoria de Fabricio Bedeschi: fabricio.bedeschi@gmail.com https://play.google.com/store/apps/details?id=com.quiz.php https://github.com/fabriciobrag/android-quiz-php
  • 82. TCC de graduação em Informática por João Paulo Cercal jpcercal@gmail.com http://zcpe.cekurte.com
  • 83. Logotipo feito cordialmente pelo francês Vincent Pontier – criador do elePHPant (mascote oficial do PHP) @Elroubio
  • 84. Meeting com Matthew Weier O'Phinney Líder do ZendFramework, líder do projeto APIgility e tantos outros: https://mwop.net ZCE (PHP 5.3), ZCPE (PHP 5.5), ZendFramework Certified, Linux Foundation Certified, CompTIA Linux+, LPI Linux Essentials, LPIC-1, certificado Novell e outras mais: http://www.zend.com/en/yellow-pages/ZEND023069
  • 85. TDC 2014 Palestra de Leonardo Sápiras na trilha "Stadium" (auditório principal) no TDC Porto Alegre 2014. Apresentação intitulada "PHP: adquirindo experiência e qualificação em projetos internacionais". Assista em: http://www.globalcode.com.br/videos/tdc-2014-portoalegre/sexta/php-experiencia-e-qualificacao-projetos-internacionais
  • 86. Pasta compartilhada no DropBox e no GoogleDrive Pedidos diretamente ao nosso "guardião" das pastas compartilhadas: Gustavo Pereira <gustavoper@gmail.com>
  • 87. Roteiro • Livro “PHP Programando com Orientação a Objetos” do autor Pablo Dall'Oglio:http://www.novatec.com.br/livros/phpobjetos2/ • Vídeo-aulas da Lynda e Udemy • Livros clássicos (embora obsoletos em alguns aspectos) • Analisar todas as "Perguntas do dia" da lista "Rumo à Certificação PHP" http://rumoacertificacaophp.com/ Tempo US$ 19,95
  • 89. Certificamp • Inspirado no http://www.bignerdranch.com • "Acampamento" de estudos para a certificação PHP • Curso itinerante, presencial e de imersão • Preparatório para o exame "Zend Certified PHP Engineer" (ZCPE PHP 5.5) • Realizado em 2 dias com carga horária de 16h • https://www.facebook.com/certificamp • https://www.twitter.com/certificamp
  • 90. Bingo! Quiz # Resposta 1 111111 2 B (5) 3 A e D 4 __autoload 5 abstract 6 E 7 Falso 8 10111213 9 (vazio) 10 42 11 A, B e C 12 estagiarios
  • 91. Contatos E-mail: arijunior@gmail.com Twitter: @stopassola Skype: stopassola LinkedIn: http://pt.linkedin.com/in/stopassola Facebook: http://www.facebook.com/arijunior Sites: http://www.perito.inf.br http://www.rumoacertificacaophp.com

Notes de l'éditeur

  1. Estratégias
  2. Pertencer a grupos de elite restritos a ZCEs. Certifica competência técnica e não comportamental. Requer maturidade na linguagem.
  3. Em média, a cada 3 anos.
  4. Auxilia os empregadores a predizer se o profissional conseguirá aplicar a tecnologia PHP 5.5 em problemas reais no desenvolvimento de software e de negócio. É uma garantia de que o desenvolvedor possui padrões mínimos de experiência e conhecimento
  5. Variam de 7% a 10% de desconto e uso ilimitado. Experimentem acessar o site da Zend, simule uma compra qualquer (no link "Store"), digite (e aplique) o ID do cupom onde diz "Discount Codes" e observem. Certifique-se da data limite do cupom. Dica marota
  6. O centro examinador local mantém uma agenda integrada com a Pearson VUE, portanto não requer confirmar o agendamento.
  7. CPF, RG, carteira de motorista (documentos oficiais)
  8. Para os testes de mesa
  9. Resposta: 111111
  10. Imagem extraída de: http://blog.placeboeffect.com/natural-anxiety-relief/
  11. No caso de “Fail”, o sistema gera um relatório do nível de conhecimento apresentado nas diferentes áreas de estudo. É um tanto vago, pois mostra apenas uma barra de progressão e não informa exatamente os erros e acertos.
  12. http://www.pearsonvue.com/athena/static/finish/index.asp
  13. A partir desse momento você já começa a desfrutar das vantagens de ser um profissional certificado. Recomendo atualizar seus dados no site da Zend (principalmente o endereço de correspondência) e aguardar a chegada do certificado “físico”, uma carta de boas-vindas com a assinatura em punho do Training Program Manager da Zend e um adesivo exclusivo.
  14. Atualize seus dados no site da Zend para que chegue corretamente
  15. Abrangência
  16. Inclusive o ZF estimula que a tag PHP de fechamento seja omitida. Alternativas iguais, mas perguntas diferentes.
  17. Resposta: B (5)
  18. Teoria dos conjuntos – oitava série do ensino médio
  19. A: OK, B: REST suporta JSON, mas também XML e HTML (portanto não), C: SOAP só usa POST (e não GET), portanto também não. http://www.soapui.org/Best-Practices/testing-the-other-verbs.html D: faz sentido
  20. Classes abstratas e interfaces são as assinaturas das classes, o esqueleto de como elas devem ser implementadas. As abstratas suportam implementação, enquanto que as interfaces não.
  21. Fracamente tipada
  22. Lembre-se que o PHP escreve o conteúdo da propriedade $a e só depois faz o incremento de uma unidade – chamado de pós-incremento ($a++). Mas o fundamental nessa questão é a retro-compatilidade. Algum desenvolvedor desavisado pode esquecer da política que mantém a compatibilidade com o suporte de Orientação à Objetos do PHP4, que executa métodos de mesmo nome da classe como se fossem construtores. Isso significa que ao instanciar a classe B, o método b() será executado automaticamente (exibindo 1011). E depois o método b é executado explicitamente ($b->b()) exibindo 1213, que concatenado o script mostra 10111213 – portanto letra A.
  23. Fonte: http://www.pearsonvue.com/athena/static/review/flag_for_review.asp
  24. Desvio de atenção: apresentam um código, mas ele sequer realiza tal operação. Indução Resposta: D (vazio)
  25. Antiga piada geek
  26. C: 42
  27. $_SERVER['REQUEST_TIME_FLOAT']
  28. A, B e C são corretas
  29. Conflito de nomes Pode compor uma classe, contendo outras classes. Mesmo assim traz tudo.
  30. “estagiarios” (sem aspas) pois a prioridade é: classe local, trait e classe herdada (super-classe base)
  31. Pseudo-código
  32. Cronograma
  33. estampa enviada pela Zend
  34. Área administrativa: http://192.241.145.236:9000/ 
  35. [ Matthew's photo by Rob Allen <https://www.flickr.com/photos/akrabat/> ]
  36. Existia a Vulcan