PHP like a
Super Hero
 elton luís minetto
    @eminetto
Quem são vocês?
Quem sou eu?
Graduado e pós-graduado em Ciência da Computação
Trabalho com PHP/MySQL desde 2000. Trabalho com Linux
desde 1997. Professor desde 2004.
Autor do livro Frameworks para Desenvolvimento em PHP -
Editora Novatec, autor do e-book Zend Framework na prática
Sócio da Coderockr
Motivação
PHP?
Por onde começo?
PHP   Namespaces Traits   Orientação a objetos Banco de

 Dados   Controle de versões
  Testes Frameworks ORM REST SOA
Integração contínua              Xdebug APC
       Memcached   Object Calisthenics
First things first...
PHP
PHP
Namespaces
1.<?php
2.namespace CoreService;

4.use ZendHttpClient as HttpClient;
5.use ZendHttpRequest;
6.class Auth
7.{
8.    public function __construct($apiKey, $apiUri, $rpcUri)
9.    {
10.        $this->httpClient = new HttpClient();
11.     }
12. }
PHP
                       Traits
http://diogobesson.com.br/programacao/php-traits/
PHP
           Servidor embutido
php -S localhost:8080 -t /var/www/projeto
PHP
                        phar
http://phpmaster.com/packaging-your-apps-with-phar/
PHP
   Composer
http://getcomposer.org
composer.json
1.{
2.    "minimum-stability": "dev",
3.    "require": {
4.        "silex/silex": "1.0.*",
5.        "dms/dms": "dev-master",
6.        "doctrine/common": "*",
7.        "doctrine/dbal": "*",
8.        "doctrine/orm": "*",
9.        "symfony/validator": "*",
10.        "symfony/class-loader": "*",
11.        "symfony/console": "*",
12.        "monolog/monolog": "*",
13.        "jms/metadata": "*",
14.        "jms/serializer-bundle": "*",
15.        "sybio/image-workshop": "*"
16.    }
17.}
Instalar dependências


1.curl -s https://getcomposer.org/installer | php
2.php composer.phar install
Atualizar dependências


1.php composer.phar update
PHP
Funções nativas
Orientação a objetos
Bancos de dados
Bancos de dados
  SQL - MySQL, sqlite, PostgreSQL
Bancos de dados
NoSQL - MongoDB, CouchDB, Cassandra, Redis, Hadoop
Controle de versões
Controle de versões
      Git, SVN, Mercurial
Testes unitários
      PHPunit



                   Mostrar os testes do modulo
                   Api rodando. Provocar um
                   erro colocando um novo
                   parâmetro no método
                   authenticate do service Auth
Segurança e programação
        segura
Segurança e programação segura
    https://www.owasp.org/index.php/Main_Page
1.$inputFilter->add($factory->createInput(array(
2.                'name'     => 'title',
3.                'required' => true,
4.                'filters'  => array(
5.                    array('name' => 'StripTags'),
6.                    array('name' => 'StringTrim'),
7.                ),
8.                'validators' => array(
9.                    array(
10.                        'name'    => 'StringLength',
11.                        'options' => array(
12.                            'encoding' => 'UTF-8',
13.                            'min'      => 1,
14.                            'max'      => 100,
15.                        ),
16.                    ),
17.                ),
18.            )));
Participe, seja social
           Participe de eventos
Participe de grupos de usuários regionais
              Escreva um blog
 Participe de fóruns e listas de discussão
Ok?
É isso
Design patterns Frameworks
 Zend Framework Symfony   Code Igniter Slim

         Silex Doctrine
Design patterns
Frameworks
Frameworks Full-Stack
 Zend Framework, CakePHP, Symfony, Code Igniter
Micro Frameworks
    Slim, Silex, Respect
ORM
Doctrine
Aprenda mais de um sistema
       operacional
       Linux, Windows, MacOSX
Tem mais?
 Manda!
SOA, Rest, RPC
Injeção de Dependências
Performance
Performance - Xdebug
        Profiling
         Debug
Mostrar cachegrind.png
Performance - Cache
      APC, Memcached
Performance - Avaliação
       Siege, Apache ab, ySlow
Integração contínua
Cloud computing
   Amazon Web Services
    Heroku, PHPCloud
Object Calisthenics
 Nove regras para melhorar o código

   http://slidesha.re/KTZM97
Certificação
O mais importante!
Divirta-se no processo
http://www.phptherightway.com
Contato
      @eminetto
http://eltonminetto.net
 http://coderockr.com

PHP like a super hero