PHP-CLI in 7 steps                     1
Henrique Moody●   Desenvolvedor web com foco em PHP desde    2007, usuário assíduo de Linux desde 2008 e    Zend Certified...
PHP nasceu para web●   A maior parte das aplicações PHP é escrita para rodar em    ambiente web;●   Nasceu sob o nome the ...
Bilú quer a concha!              4
CLI - Command-Line Interface●   PHP suporta CLI desde o PHP 4.3.0.●   O foco principal deste SAPI é para o desenvolvimento...
Sete passos!1) Habilitar PHP-CLI                                      6
Habilitando PHP-CLI●   Vem habilitado por padrão na maioria das distrubições Linux;●   Para habilitar ao compilar utilize ...
Sete passos!1) Habilitar PHP-CLI;2) Shebang                                       8
Shebang●   Um shebang refere-se aos dois caracteres "#!", quando os    mesmos são os primeiros caracteres de um arquivo de...
Exemplo●   Scripts em bash iniciam-se com o shebang      #!/bin/bash      echo Hello!                                     ...
Exemplo●   Scripts em PHP iniciam-se com o shebang      #!/bin/php      <?php      echo "Hello";                          ...
Dica: Path do interpretador●   Algumas vezes o interpretador pode estar em um path    diferente, por exemplo, o PHP pode e...
script.php#!/usr/bin/env php<?phpecho "Hello";                     13
Sete passos!1) Habilitar PHP-CLI;2) Shebang;3) Passagem de argumentos                                           14
$argv●   Array com os valores dos argumentos passados.                                                    15
script.php           $ chmod +x script.php                     $ ./script.php Henrique Moody                     Array#!/u...
$argc●   Número de parâmetros passados                                    17
script.php           $ chmod +x script.php                     $ ./script.php Henrique Moody                     3#!/usr/b...
$argc + $argv●   Combinação poderoza que permite parsear os argumentos    passados                                        ...
script.php                          $ chmod +x script.php                                    $ ./script.php ­­first Henriq...
getopt()●   Facilita o parser de argumentos                                      21
script.php                                               $ chmod +x script.php                                            ...
Bilú quer objeto!            23
Pacotes PHP para CLI scripts●   Console_Getopt (PEAR);●   Zend_Console_Getopt;●   SymfonyComponentConsole.                ...
Sete passos!1) Habilitar PHP-CLI;2) Shebang;3) Passagem de argumentos;4) STDIN                                            25
STDIN●   Entrada padrão de dados.                                       26
script.php                    $ chmod +x script.php                              $ ./script.php                           ...
Sete passos!1) Habilitar PHP-CLI;2) Shebang;3) Passagem de argumentos;4) STDIN;5) STDOUT                                  ...
STDOUT●   Saída padrão de dados.                                      29
script.php                                       $ chmod +x script.php                                                 $ ....
Sete passos!1) Habilitar PHP-CLI;2) Shebang;3) Passagem de argumentos;4) STDIN;5) STDOUT;6) STDERR                        ...
script.php                                       $ chmod +x script.php                                                 $ ....
What dá Fuck?                33
Relaxe ostendões.            34
STDOUT e STDERR●   Para um usuário aparentemente não há diferença, mas para    um programa há.                            ...
$ chmod +x script.php         $ chmod +x script.php$ ./stdout.php                $ ./stderr.phpHola ¿cómo estás?          ...
Sete passos!1) Habilitar PHP-CLI;2) Shebang;3) Passagem de argumentos;4) STDIN;5) STDOUT;6) STDERR7) Exitcode             ...
Exit code●   Exit code, ou return code de um processo é um número inteiro que é    passado do processo filho para o proces...
script.php                                                  $ chmod +x script.php                                         ...
Acho que não temos tempo pra perguntas :/                                            40
Obrigado =)              41
Upcoming SlideShare
Loading in...5
×

PHP-CLI in 7 steps - 7Masters PHP

922

Published on

Apresentação de Henrique Moody, no 7Masters - Encontro iMasters de Especialistas em PHP - Janeiro/2013

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
922
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

PHP-CLI in 7 steps - 7Masters PHP

  1. 1. PHP-CLI in 7 steps 1
  2. 2. Henrique Moody● Desenvolvedor web com foco em PHP desde 2007, usuário assíduo de Linux desde 2008 e Zend Certified Engineer desde 2011.● Atua com Desenvolvedor e Líder Técnico na Dafiti - empresa de comércio eletrônico brasileira.● Forte entusiasta da comunidade PHP no Brasil e contribuidor de projetos Open Source como Respect e Composer dentre vários outros.https://about.me/henriquemoody 2
  3. 3. PHP nasceu para web● A maior parte das aplicações PHP é escrita para rodar em ambiente web;● Nasceu sob o nome the Personal Home Page/Forms Interpreter;● Após o lançamento da versão 4 houve a necessidade de rodar PHP fora da web. 3
  4. 4. Bilú quer a concha! 4
  5. 5. CLI - Command-Line Interface● PHP suporta CLI desde o PHP 4.3.0.● O foco principal deste SAPI é para o desenvolvimento de aplicações Shell (concha) com PHP;● Funciona em qualquer OS. 5
  6. 6. Sete passos!1) Habilitar PHP-CLI 6
  7. 7. Habilitando PHP-CLI● Vem habilitado por padrão na maioria das distrubições Linux;● Para habilitar ao compilar utilize –enable­cli (habilitado por padrão);● Windows: verifique a variável de ambiente PATH;● Debian-based: apt­get install php­cli;● RPM-based: yum install php­cli. 7
  8. 8. Sete passos!1) Habilitar PHP-CLI;2) Shebang 8
  9. 9. Shebang● Um shebang refere-se aos dois caracteres "#!", quando os mesmos são os primeiros caracteres de um arquivo de texto, especificamente em um código fonte escrito em uma linguagem interpretada.● O sistema tenta executar o arquivo usando um interpretador especificado pelo shebang. 9
  10. 10. Exemplo● Scripts em bash iniciam-se com o shebang #!/bin/bash echo Hello! 10
  11. 11. Exemplo● Scripts em PHP iniciam-se com o shebang #!/bin/php <?php echo "Hello"; 11
  12. 12. Dica: Path do interpretador● Algumas vezes o interpretador pode estar em um path diferente, por exemplo, o PHP pode estar em /usr/bin/php e não em /usr/bin/php.● Para resolver este problema podemos usar o comando /usr/bin/env que define as variáveis de ambiente. 12
  13. 13. script.php#!/usr/bin/env php<?phpecho "Hello"; 13
  14. 14. Sete passos!1) Habilitar PHP-CLI;2) Shebang;3) Passagem de argumentos 14
  15. 15. $argv● Array com os valores dos argumentos passados. 15
  16. 16. script.php $ chmod +x script.php $ ./script.php Henrique Moody Array#!/usr/bin/env php (<?php     [0] => ./script.phpprint_r($argv);     [1] => Henrique     [2] => Moody ) 16
  17. 17. $argc● Número de parâmetros passados 17
  18. 18. script.php $ chmod +x script.php $ ./script.php Henrique Moody 3#!/usr/bin/env php<?phpprint_r($argc); 18
  19. 19. $argc + $argv● Combinação poderoza que permite parsear os argumentos passados 19
  20. 20. script.php $ chmod +x script.php $ ./script.php ­­first Henrique ­­last Moody Array#!/usr/bin/env php (<?php     [­­first] => Henrique$options = array();for ($i=1; $i < $argc; $i=$i+2) {     [­­last] => Moody    $key = $argv[$i]; )    $value = $argv[$i+1];    $options[$key] = $value;}print_r($options); 20
  21. 21. getopt()● Facilita o parser de argumentos 21
  22. 22. script.php $ chmod +x script.php $ ./script.php    ­f "value for f" #!/usr/bin/env php   ­v ­a <?php   ­­required value $shortopts  = "";$shortopts .= "f:";  // Valor obrigatório   ­­optional="optional value" $shortopts .= "v::"; // Valor opcional   ­­option$shortopts .= "abc"; // Opções que não aceitam valores Array$longopts  = array( (    "required:",     // Valor obrigatório    "optional::",    // Valor opcional     [f] => value for f    "option",        // Sem valor     [v] =>     "opt",           // Sem valor);     [a] => $options = getopt($shortopts, $longopts);     [required] => valueprint_r($options);     [optional] => optional value     [option] =>  ) 22
  23. 23. Bilú quer objeto! 23
  24. 24. Pacotes PHP para CLI scripts● Console_Getopt (PEAR);● Zend_Console_Getopt;● SymfonyComponentConsole. 24
  25. 25. Sete passos!1) Habilitar PHP-CLI;2) Shebang;3) Passagem de argumentos;4) STDIN 25
  26. 26. STDIN● Entrada padrão de dados. 26
  27. 27. script.php $ chmod +x script.php $ ./script.php Digite o seu nome: Henrique Moody#!/usr/bin/env php Henrique Moody<?phpecho "Digite o seu nome: ";$name = fgets(STDIN);print_r($name); 27
  28. 28. Sete passos!1) Habilitar PHP-CLI;2) Shebang;3) Passagem de argumentos;4) STDIN;5) STDOUT 28
  29. 29. STDOUT● Saída padrão de dados. 29
  30. 30. script.php $ chmod +x script.php $ ./script.php Hola ¿cómo estás?#!/usr/bin/env php<?phpfwrite(STDOUT, Hola ¿cómo estás? . PHP_EOL); 30
  31. 31. Sete passos!1) Habilitar PHP-CLI;2) Shebang;3) Passagem de argumentos;4) STDIN;5) STDOUT;6) STDERR 31
  32. 32. script.php $ chmod +x script.php $ ./script.php Hola ¿cómo estás?#!/usr/bin/env php<?phpfwrite(STDERR, Hola ¿cómo estás? . PHP_EOL); 32
  33. 33. What dá Fuck? 33
  34. 34. Relaxe ostendões. 34
  35. 35. STDOUT e STDERR● Para um usuário aparentemente não há diferença, mas para um programa há. 35
  36. 36. $ chmod +x script.php $ chmod +x script.php$ ./stdout.php $ ./stderr.phpHola ¿cómo estás? Hola ¿cómo estás?$ ./stdout.php > /dev/null $ ./stderr.php > /dev/null Hola ¿cómo estás?$ ./stdout.php 2> /dev/null $ ./stderr.php 2> /dev/nullHola ¿cómo estás? 36
  37. 37. Sete passos!1) Habilitar PHP-CLI;2) Shebang;3) Passagem de argumentos;4) STDIN;5) STDOUT;6) STDERR7) Exitcode 37
  38. 38. Exit code● Exit code, ou return code de um processo é um número inteiro que é passado do processo filho para o processo pai quando o processo filho termina sua execução.● O número deve ser entre 0-255, ao forçar um número fora desse intervalo o comportamento é intermitente;● 0 é considerado sucesso;● Qualquer número maior que 0 é considerado erro;● O programador pode/deve documentar os tipos de erro por número. 38
  39. 39. script.php $ chmod +x script.php $ ./script.php  Quanto é 1 + 1? 2#!/usr/bin/env php Certa resposta!<?phpfwrite(STDOUT, Quanto é 1 + 1? );$value = trim(fgets(STDIN)); $ echo $? 0if ($value == 2) {    fwrite(STDOUT, Certa resposta! . PHP_EOL);      exit(0); $ ./script.php } else {    fwrite(STDOUT, Resposta errada, manolo! . PHP_EOL); Quanto é 1 + 1? 4    exit(1); Resposta errada, manolo!} $ echo $? 1 39
  40. 40. Acho que não temos tempo pra perguntas :/ 40
  41. 41. Obrigado =) 41
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×