PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
Transcript of PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
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
Estatísticas: Yellow Pages
Até o momento (março/2016) há somente 450 profissionais certificados ZCE/ZCPE no Brasil: ���
http://www.zend.com/en/services/certification/zend-certified-engineer-directory
h0p://www.zend.com/en/yellow-‐pages/ZEND004019
Logotipo para empresas que desejam contratar profissionais ZCPE
Desconto na compra de vouchers acima de 10 unidades: [email protected]
Preço e cupons de desconto
http://www.softwarediscountcodes.com/zend-phpcertification.htmlhttp://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
7 a 10%
Zend Education Advisory Board
Fonte: http://www.zend.com/services/certification/php-5-certification/education-advisory-board
Itens permitidos
• Eraseable board (quadro apagável)• Protetor auricular
• Sua conduta é monitorada o tempo todo
• Qualquer suspeita de irregularidade, sua prova é invalidada
Fonte: h0p://www.gedtesHngservice.com/testers/noteboards
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…
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.
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
Alguns assuntos tem mais peso que outros
Ênfase maiorFundamentos do PHP, Programação Orientada à Objetos e Segurança
Ênfase médiaFunções, Recursos Web, Arrays e Strings e Padrões
Ênfase menorBanco de Dados, Formato de dados e tipos e I/O (Entrada e Saída)
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)
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).
Quiz
Preencha o espaço em branco com o nome adequado.
A função _____________ chama automaticamente os recursos necessários sempre que um usuário tenta instanciar uma classe inexistente.
__autoload()
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
Comentar questão
• Se você detectar algo estranho na questão, é possível fazer um comentário
• Dificilmente vai ocorrer alguma resposta dúbia, enunciado mal construído, falta de dados…
• O cronômetro continua correndo, portanto use com moderação
• Seus comentário serão enviados diretamente para a Zend
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).
Removidas na versão 5.4
5 MIL funções
Devo memorizar todas elas?E a ordem dos respectivos parâmetros?
O foco do teste é em análise de algoritmos ou
invés de memorização
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 underscorejson_decode base64_decode
urldecode 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/objetosocket_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)
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• 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)
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
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
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 re
dund
ante
bloqueia tabela try {
escreve no banco de dados } catch exceção {
reporta problemas } finally {
desbloqueia tabela }
Preparatório oficial da Zend
• 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
Dou
g Bi
erer
Lista de discussão: Rumo à certificação PHP www.rumoacertificacaophp.com
• Criada em 31/07/2010• Atualmente com 1.600 membros
• Ficou conhecida pela “Pergunta do dia”• Hoje, dia 22/março, foi publicada a pergunta de nº 2.045
• Grupo no Facebook: http://www.facebook.com/groups/434330716587436/
Primeiro logo, criado por Gustavo Pereira
Ari
e G
usta
vo –
nov
/201
3 em
Osa
sco
(SP)
Livros
• Rumo à Certificação PHP por Kinn Coelho Julião <[email protected]> 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)
App para Android - autoria de Fabricio Bedeschi: [email protected]
https://play.google.com/store/apps/details?id=com.quiz.php https://github.com/fabriciobrag/android-quiz-php
Logotipo feito cordialmente pelo francês Vincent Pontier – criador do elePHPant (mascote oficial do PHP)
@Elroubio
Pasta compartilhada no DropBox e GoogleDrive
Pedidos diretamente ao nosso "guardião" das pastas compartilhadas: ���Gustavo Pereira <[email protected]>
Dicas de quem já é certificado https://www.youtube.com/watch?v=GE0d3rkkLmYhttps://www.youtube.com/watch?v=LOupOxdSWtohttps://www.youtube.com/watch?v=RuSZfeLpiv8
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, Udemy e iMasters• Analisar todas as "Perguntas do dia" da lista "Rumo à Certificação PHP"
http://rumoacertificacaophp.com/ Tempo
US$ 19,95
Saindo do forno… Livro inédito sobre o assunto (principalmente em português) com a autoria de Matheus Marabesi e Michael Douglas Barbosa Araujo
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"
https://www.facebook.com/certificamp https://www.twitter.com/certificamp
E-mail: [email protected]: @stopassolaSkype: stopassolaLinkedIn: http://pt.linkedin.com/in/stopassolaFacebook: http://www.facebook.com/arijunior
Sites:http://www.perito.inf.brhttp://www.certificamp.com http://www.rumoacertificacaophp.com
Contatos