rumo à certificação php

Post on 09-Jul-2015

1.219 Views

Category:

Presentations & Public Speaking

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

Apresentação intitulada "Rumo à Certificação PHP" na V Jornada Acadêmica de Análise e Desenvolvimento de Sistemas do IFRS - Câmpus Bento Gonçalves (que ocorreu entre os dias 6 e 7/11/2014): http://ads.bento.ifrs.edu.br/noticias/view/id/118/ Apresentei as vantagens em ser um profissional certificado, como funciona a compra do voucher, formato do teste, qual o conteúdo do exame, tecnologias relacionadas que também são abordadas, estratégias para conduzir melhor a prova, exemplos de questões, como as versões do PHP influenciam no teste, diferenças da ZCE (PHP 5.3) x ZCPE (PHP 5.5), armadilhas, técnicas de resolução das perguntas, como lidar com as inconsistências da linguagem, preparatório, simulados e a lista "Rumo à Certificação PHP": http://www.rumoacertificacaophp.com

TRANSCRIPT

Rumo à certificação PHP

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.

Ari Stopassola Junior

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

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

7 a 10%

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 oficiaisidentificadores com foto, para evitarfraudes

• Esteja hidratado

• Não é permitido levar qualquer material –eles ficam armazenados num armáriochaveado

• Não é permitido levantar-se no decorrerdo exame. Ida ao banheiro é controlada

Itens permitidos

• Eraseable board (quadro apagável)

• Protetor auricular

• Sua conduta é monitorada o tempo todo

• Qualquer suspeita de irregularidade, suaprova é invalidada

Fonte: http://www.gedtestingservice.com/testers/noteboards

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 gerampenalidades

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

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 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 quearray_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: VerdadeiroB: FalsoC: Parse errorD: (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últiplaAlgumas 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?

http://en.wikipedia.org/wiki/Diamond_problem

Herança múltipla

Métodos sobrescritos de A

Qual usar?

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 #12Qual 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 Cachezend_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

}

dig

ore

du

nd

ante

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 B

iere

r

Disciplina

Lista de discussão:

Rumo à certificação PHPwww.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 porGustavo Pereira

Ari

e G

usta

vo

–n

ov/2

01

3 e

mO

sa

sco

(S

P)

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.comhttps://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

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

Líder do ZendFramework, líder do projeto APIgility e tantos outros:

https://mwop.net

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

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

Contatos

top related