Além da universidade
Daniel Archer
Maio/2015
Quem sou eu
Formado pelo Senac
em 2011
Palestrante da PHP
Conference Brasil
5 Anos de experiência
em PHP
Atualmente analista de
sistemas na Servicoop
Diferenças de Mercado
Software House / inCompany
Software House
Software House
Websites
Portais
E-commerce
Blogs
Hotsites
Extranets
inCompany
inCompany
Intranet
CRM
ERP
Sistemas Diferentes
Abordagens diferentes
Escolha apenas 2
Rápido
BomBarato
Testes
Automatizados ou não, são necessários.
Testes
• Testar entradas
– Seu usuário vai escrever errado
• Testar qual o comportamento
– Em diferentes situações
• Mensagens de erro
– Provoque todas as mensagens
• Elas são compreensíveis para a pessoa que
vai utilizar o software?
Ninguém é dono da verdade
Não existe melhor tecnologia
Resolução de Problemas
Cada tecnologia tem como objetivo
resolver um ou mais problemas.
Algumas resolvem muitos, outras são
extremamente específicas.
• ZendAuthentication
• ZendBarcode
• ZendCache
• ZendCaptcha
• ZendCodeGenerator
• ZendConfig
• ZendConsole
• ZendConsoleGetopt
• ZendCrypt
• ZendDb
• ZendDebug
• ZendDi
• ZendDom
• ZendEscaper
• ZendEventManager
• ZendFeed
• ZendFile
• ZendFilter
• ZendForm
• ZendHttp
• ZendI18n
• ZendInputFilter
• ZendJson
• ZendLdap
• ZendLoader
• ZendLog
• ZendMail
• ZendMath
• ZendMemory
• ZendMime
• ZendModuleManager
• ZendMvc
• ZendNavigation
• ZendPaginator
• ZendPermissionsAcl
• ZendPermissionsRbac
• ZendProgressBar
• ZendSerializer
• ZendServer
• ZendServiceManager
• ZendSession
• ZendSoap
• ZendStdlib
• ZendTag
• ZendTest
• ZendText
• ZendUri
• ZendValidator
• ZendVersion
• ZendView
• ZendXmlRpc
• Map resource URIs to callback
functions
• That’s it.
Tecnologias Utilizadas
No mundo real, o que é mais utilizado
Fullstack
Fullstack
• Aplicações grandes
• Regras de negócios complexas
• Equipe madura
• Padronização forçada
Micro-frameworks
Micro-frameworks
• Aplicações Simples
• APIs
• Integração
• Padronização manual
Cargos
Atribuições técnicas de juniores, plenos e seniores.
Carreira PHP
https://github.com/abraphp/CarreiraPHP
Júnior
• Protocolo HTTP
• GET, POST, UPDATE, DELETE, OPTION
• SQL Básico
• Configurações do PHP.INI
• Noções de como funciona o APACHE
• “plus” Conhecimento básico em
algum framework.
Pleno
• Domínio da Linguagem
• SQL Avançado
– triggers e functions
• Configurações de Performance
• Conhecimento médio de linux
• Saber identificar e aplicar padrões de projeto
– Factory, Adapter, Facede
• Segurança
• Conhecimentos sólidos em algum framework
MVC
• Conhecimento em noSQL
Boas Práticas
O que fazer e o que evitar.
Tópicos interessantes
S.O.L.I.D.
Design
Patterns
Clean
Code
Object
Calisthenics
Object Calisthenics
1. Um nível de indentação por método.
2. Não utilize else
3. Encapsule os tipos primitivos
4. Apenas um -> por linha
5. Não Abrevie
6. Mantenha suas classes pequenas
7. Limite o número de Atributos
8. Utilize Coleções
9. Use Getters e Setters
Object Calisthenics
1. Um nível de indentação por método.
2. Não utilize else
3. Encapsule os tipos primitivos
4. Apenas um -> por linha
5. Não Abrevie
6. Mantenha suas classes pequenas
7. Limite o número de Atributos
8. Utilize Coleções
9. Use Getters e Setters
Object Calisthenics
1. Um nível de indentação por método.
2. Não utilize else
3. Encapsule os tipos primitivos
4. Apenas um -> por linha
5. Não Abrevie
6. Mantenha suas classes pequenas
7. Limite o número de Atributos
8. Utilize Coleções
9. Use Getters e Setters
Object Calisthenics
1. Um nível de indentação por método.
2. Não utilize else
3. Encapsule os tipos primitivos
4. Apenas um -> por linha
5. Não Abrevie
6. Mantenha suas classes pequenas
7. Limite o número de Atributos
8. Utilize Coleções
9. Use Getters e Setters
Object Calisthenics
1. Um nível de indentação por método.
2. Não utilize else
3. Encapsule os tipos primitivos
4. Apenas um -> por linha
5. Não Abrevie
6. Mantenha suas classes pequenas
7. Limite o número de Atributos
8. Utilize Coleções
9. Use Getters e Setters
Object Calisthenics
1. Um nível de indentação por método.
2. Não utilize else
3. Encapsule os tipos primitivos
4. Apenas um -> por linha
5. Não Abrevie
6. Mantenha suas classes pequenas
7. Limite o número de Atributos
8. Utilize Coleções
9. Use Getters e Setters
Object Calisthenics
1. Um nível de indentação por método.
2. Não utilize else
3. Encapsule os tipos primitivos
4. Apenas um -> por linha
5. Não Abrevie
6. Mantenha suas classes pequenas
7. Limite o número de Atributos
8. Utilize Coleções
9. Use Getters e Setters
Object Calisthenics
1. Um nível de indentação por método.
2. Não utilize else
3. Encapsule os tipos primitivos
4. Apenas um -> por linha
5. Não Abrevie
6. Mantenha suas classes pequenas
7. Limite o número de Atributos
8. Utilize Coleções
9. Use Getters e Setters
Object Calisthenics
1. Um nível de indentação por método.
2. Não utilize else
3. Encapsule os tipos primitivos
4. Apenas um -> por linha
5. Não Abrevie
6. Mantenha suas classes pequenas
7. Limite o número de Atributos
8. Utilize Coleções
9. Use Getters e Setters
PHP Além da universidade

PHP Além da universidade

  • 1.
  • 2.
    Quem sou eu Formadopelo Senac em 2011 Palestrante da PHP Conference Brasil 5 Anos de experiência em PHP Atualmente analista de sistemas na Servicoop
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 12.
    Testes • Testar entradas –Seu usuário vai escrever errado • Testar qual o comportamento – Em diferentes situações • Mensagens de erro – Provoque todas as mensagens • Elas são compreensíveis para a pessoa que vai utilizar o software?
  • 13.
    Ninguém é donoda verdade Não existe melhor tecnologia
  • 14.
    Resolução de Problemas Cadatecnologia tem como objetivo resolver um ou mais problemas. Algumas resolvem muitos, outras são extremamente específicas.
  • 15.
    • ZendAuthentication • ZendBarcode •ZendCache • ZendCaptcha • ZendCodeGenerator • ZendConfig • ZendConsole • ZendConsoleGetopt • ZendCrypt • ZendDb • ZendDebug • ZendDi • ZendDom • ZendEscaper • ZendEventManager • ZendFeed • ZendFile • ZendFilter • ZendForm • ZendHttp • ZendI18n • ZendInputFilter • ZendJson • ZendLdap • ZendLoader • ZendLog • ZendMail • ZendMath • ZendMemory • ZendMime • ZendModuleManager • ZendMvc • ZendNavigation • ZendPaginator • ZendPermissionsAcl • ZendPermissionsRbac • ZendProgressBar • ZendSerializer • ZendServer • ZendServiceManager • ZendSession • ZendSoap • ZendStdlib • ZendTag • ZendTest • ZendText • ZendUri • ZendValidator • ZendVersion • ZendView • ZendXmlRpc
  • 16.
    • Map resourceURIs to callback functions • That’s it.
  • 17.
    Tecnologias Utilizadas No mundoreal, o que é mais utilizado
  • 19.
  • 20.
    Fullstack • Aplicações grandes •Regras de negócios complexas • Equipe madura • Padronização forçada
  • 21.
  • 22.
    Micro-frameworks • Aplicações Simples •APIs • Integração • Padronização manual
  • 23.
    Cargos Atribuições técnicas dejuniores, plenos e seniores.
  • 24.
  • 25.
    Júnior • Protocolo HTTP •GET, POST, UPDATE, DELETE, OPTION • SQL Básico • Configurações do PHP.INI • Noções de como funciona o APACHE • “plus” Conhecimento básico em algum framework.
  • 26.
    Pleno • Domínio daLinguagem • SQL Avançado – triggers e functions • Configurações de Performance • Conhecimento médio de linux • Saber identificar e aplicar padrões de projeto – Factory, Adapter, Facede • Segurança • Conhecimentos sólidos em algum framework MVC • Conhecimento em noSQL
  • 27.
    Boas Práticas O quefazer e o que evitar.
  • 32.
  • 33.
    Object Calisthenics 1. Umnível de indentação por método. 2. Não utilize else 3. Encapsule os tipos primitivos 4. Apenas um -> por linha 5. Não Abrevie 6. Mantenha suas classes pequenas 7. Limite o número de Atributos 8. Utilize Coleções 9. Use Getters e Setters
  • 34.
    Object Calisthenics 1. Umnível de indentação por método. 2. Não utilize else 3. Encapsule os tipos primitivos 4. Apenas um -> por linha 5. Não Abrevie 6. Mantenha suas classes pequenas 7. Limite o número de Atributos 8. Utilize Coleções 9. Use Getters e Setters
  • 37.
    Object Calisthenics 1. Umnível de indentação por método. 2. Não utilize else 3. Encapsule os tipos primitivos 4. Apenas um -> por linha 5. Não Abrevie 6. Mantenha suas classes pequenas 7. Limite o número de Atributos 8. Utilize Coleções 9. Use Getters e Setters
  • 38.
    Object Calisthenics 1. Umnível de indentação por método. 2. Não utilize else 3. Encapsule os tipos primitivos 4. Apenas um -> por linha 5. Não Abrevie 6. Mantenha suas classes pequenas 7. Limite o número de Atributos 8. Utilize Coleções 9. Use Getters e Setters
  • 39.
    Object Calisthenics 1. Umnível de indentação por método. 2. Não utilize else 3. Encapsule os tipos primitivos 4. Apenas um -> por linha 5. Não Abrevie 6. Mantenha suas classes pequenas 7. Limite o número de Atributos 8. Utilize Coleções 9. Use Getters e Setters
  • 40.
    Object Calisthenics 1. Umnível de indentação por método. 2. Não utilize else 3. Encapsule os tipos primitivos 4. Apenas um -> por linha 5. Não Abrevie 6. Mantenha suas classes pequenas 7. Limite o número de Atributos 8. Utilize Coleções 9. Use Getters e Setters
  • 41.
    Object Calisthenics 1. Umnível de indentação por método. 2. Não utilize else 3. Encapsule os tipos primitivos 4. Apenas um -> por linha 5. Não Abrevie 6. Mantenha suas classes pequenas 7. Limite o número de Atributos 8. Utilize Coleções 9. Use Getters e Setters
  • 42.
    Object Calisthenics 1. Umnível de indentação por método. 2. Não utilize else 3. Encapsule os tipos primitivos 4. Apenas um -> por linha 5. Não Abrevie 6. Mantenha suas classes pequenas 7. Limite o número de Atributos 8. Utilize Coleções 9. Use Getters e Setters
  • 43.
    Object Calisthenics 1. Umnível de indentação por método. 2. Não utilize else 3. Encapsule os tipos primitivos 4. Apenas um -> por linha 5. Não Abrevie 6. Mantenha suas classes pequenas 7. Limite o número de Atributos 8. Utilize Coleções 9. Use Getters e Setters