Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Modern PHP

Modern PHP

Painel Modern PHP, foi apresentado no Conexão KingHost por Ari Stopassola Junior e eu (Fernando Silva), onde falamos sobre Renascimento do PHP, evolução desde a versão 5.3, novos recursos (Namespace, Traits, Generators, Closures, OPCache, built-in server), PHP-FIG e padrões PSR, componentes (Composer), frameworks, boas práticas, hospedagens, provisionamento, otimização, integração contínua, deployment, testes (PHPUnit, Behat e Codeception), profiling (debug), mecanismos de fila, ORM (Object-Relational Mapping), HHVM, Hack e PHP7, ecossistema PHP, extensões e comunidade.

Fernando Silva

April 06, 2017
Tweet

More Decks by Fernando Silva

Other Decks in Programming

Transcript

  1. • Rasmus Lerdorf • Conjunto de scripts • "Personal Home

    Page Tools" • Viveu em Porto Alegre de 1991 a 1993 Extraído de: http://lerdorf.com/resume/ O começo...
  2. xDebug • Debug ◦ rastreamento de erros ◦ substitui as

    funções nativas var_dump e var_export ◦ execução passo-a-passo ◦ oferece proteção contra recursão (xdebug.max_nesting_level) • Profiling ◦ gera arquivos cachegrind ◦ identifica gargalos ◦ analisa a execução e mede o uso de memória, tempo e frequência das chamadas
  3. Mapeamento Objeto Relacional (ORM) • Persistir o objeto numa estrutura

    de dados relacional • Tradução para tabelas, campos e linhas • Overhead • Requer aprendizagem de outras tecnologias. Ex.: DQL (Doctrine), Propel, Eloquent etc.
  4. <?php //SELECT * FROM artigos WHERE id=23 $artigo = App\Artigos::find(23);

    $artigo->titulo = "Apresentando Modern PHP"; $artigo->publicado_em = Carbon\Carbon::now(); $artigo->save(); //SELECT * FROM artigos WHERE titulo='Ari' $artigo = App\Artigos::where('titulo', 'Ari')->get(); //SELECT * FROM artigos WHERE assunto='PHP' ORDER BY publicado_em DESC LIMIT 10 $artigo = App\Artigos::where('assunto', 'PHP') ->orderBy('publicado_em', 'desc') ->take(10) ->get(); $artigos = \App\Artigos::all(); return $artigos;
  5. Testes Exemplo utilizando Codeception <?php $I = new AcceptanceTester($scenario); $I->wantTo('Me

    autenticar no sistema'); $I->amOnPage('/login'); $I->fillField('email', '[email protected]'); $I->fillField('senha', 'p@$$w0#d'); $I->click('Entrar'); $I->see('Agenda', 'h1'); ?>
  6. Testes de API <?php $I = new ApiTester($scenario); $I->wantTo('Cadastra usuário

    no passeio'); $I->amHttpAuthenticated('administrador', 'P@$$w0rd'); $I->haveHttpHeader('Content-Type', 'application/x-www-form-urlencoded'); $I->sendPOST('/passeios', ['id_usr'=>309, 'id'=>14, 'horario'=>'10:30']); $I->seeResponseCodeIs(200); $I->seeResponseIsJson(); $I->seeResponseContains('{"resultado":"ok"}'); ?>
  7. Processo de build no PHP • Submeter aos testes (unitário,

    comportamento e integração) • Executar as migrations • Concatenar e minificar arquivos JavaScript e CSS • Comprimir imagens • Compilar Sass e LESS • Atribuir permissões em arquivos/pastas • Produzir arquivos estáticos, como HTMLs • Agendamentos na CRON • php.ini local x php.ini do servidor x php.ini do CLI • Transformar código de ECMA6 para ECMA5
  8. Implantação: simples, previsível e reversível • Capistrano http://capistranorb.com • Phing

    (manual) http://www.phing.info • Rocketeer http://rocketeer.autopergamene.eu • Magallanes http://magephp.com
  9. Obrigado! Participe da comunidade PHPRS. phprs.com.br rselephants @phprs phprs.slack.com meetup.com/php-rs

    PHP Rio Grande do Sul @FernandoDebrand [email protected] https://speakerdeck.com/fernandodebrando @stopassola [email protected]