Desenvolvendo em php cli

Please download to get full document.

View again

All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
 3
 
  1. Desenvolvendo  em  PHP-­‐Cli   Thiago  Paes  –  PHPSC  Conference  -­‐  2013   2. Thiago Paes ã  ã  ã  ã  Evangelista  PHP  …
Related documents
Share
Transcript
  • 1. Desenvolvendo  em  PHP-­‐Cli   Thiago  Paes  –  PHPSC  Conference  -­‐  2013  
  • 2. Thiago Paes •  •  •  •  Evangelista  PHP   Aficcionado  por  código  limpo  e  organizado   Membro  do  PHP-­‐SC   Programador  PHP  a  10+  
  • 3. PHP  não  é  somente  Server  Side,     você  pode  fazer  poderosas  aplicações     rodando  localmente.     SEM  um  servidor  web.  
  • 4. VÁ  EM  FRENTE,     PEQUENO   PADAWAN  
  • 5. $ARGC  &  $ARGV  
  • 6. FAÇA  DIREITO!!!!  
  • 7. Symfony Console namespace  AcmeDemoBundleCommand;     use  SymfonyComponentConsoleCommandCommand;   use  SymfonyComponentConsoleInputInputArgument;   use  SymfonyComponentConsoleInputInputInterface;   use  SymfonyComponentConsoleInputInputOp^on;   use  SymfonyComponentConsoleOutputOutputInterface;     class  GreetCommand  extends  Command   {          protected  func^on  configure()          {                  $this                          -­‐>setName('demo:greet')                          -­‐>setDescrip^on('Greet  someone')                          -­‐>addArgument(                                  'name',                                  InputArgument::OPTIONAL,                                  'Who  do  you  want  to  greet?'                          )                          -­‐>addOp^on(                                'yell',                                null,                                InputOp^on::VALUE_NONE,                                'If  set,  the  task  will  yell  in  uppercase  lelers'                          );          }             …  
  • 8. Symfony Console …    protected  func^on  execute(InputInterface  $input,  OutputInterface  $output)          {                  $name  =  $input-­‐>getArgument('name');                  if  ($name)  {                          $text  =  'Hello  '.$name;                  }  else  {                          $text  =  'Hello';                  }                    if  ($input-­‐>getOp^on('yell'))  {                          $text  =  strtoupper($text);                  }                    $output-­‐>writeln($text);          }   }  
  • 9. Silex //Bootstrap our Silex application $app = require __DIR__ . '/src/bootstrap.php'; //Include the namespaces of the components we plan to use use SymfonyComponentConsoleApplication; use SymfonyComponentConsoleInputInputInterface; use SymfonyComponentConsoleInputInputArgument; use SymfonyComponentConsoleInputInputOption; use SymfonyComponentConsoleOutputOutputInterface; //Instantiate our Console application $console = new Application('ProjectName', '0.1'); …  
  • 10. …   Silex //Register a command to run from the command line //Our command will be started with "./console.php sync" $console->register( 'sync' )   ->setDefinition( array(      //Create a "--test" optional parameter      new InputOption('test', '', InputOption::VALUE_NONE, 'Test mode'),     ) )   ->setDescription('Synchronize with an external data source')   ->setHelp('Usage: <info>./console.php sync [--test]</info>')   ->setCode(     function(InputInterface $input, OutputInterface $output) use ($app)     {       if ($input->getOption('test'))       {         $output->write("ntTest Mode Enablednn");       }                               } ); $output->write( "Contacting external data source ...n"); //Do work here //Example: //  $app[ 'myExtension' ]->doStuff(); $console->run();
  • 11. Silex $> ./console.php ProjectName version ProjectVersion Usage: [options] command [arguments] Options: --help --quiet --verbose --version --ansi --no-ansi --no-interaction -h -q -v -V Display this help message. Do not output any message. Increase verbosity of messages. Display this program version. Force ANSI output. Disable ANSI output. -n Do not ask any interactive question. Available commands: help Displays help for a command list Lists commands sync Synchronize with an external data source
  • 12. Zend Console //    modules/applica.on/config/module.config.php   array( 'router' => array( 'routes' => array( // HTTP routes are defined here ) ), 'console' => array( 'router' => array( 'routes' => array( // Console routes go here ) ) ), )
  • 13. Console Getopt Plus $config = array(       'header' => array('The command xyz is used to...',         'Note that the header and the usage are optional.'),       'usage' => array('--foo', '--bar <arg> -c [arg]'),       'options' => array(         array('long' => 'foo', 'type' => 'noarg', 'desc' => array(           'An option without argument with only the long',           'name defined.')),         array('long' => 'bar', 'type' => 'mandatory', 'short' => 'b',           'desc' => array('arg',             'A mandatory option with both the long and',             'the short names defined.')),         array('short' => 'c', 'type' => 'optional',           'desc' => array('arg',             'An option with an optional argument with only',             'the short name defined.'))),         'parameters' => array('[param1] [param2]',           'Some additional parameters.'),         'footer' => array('Some additional information.',           'Note that the footer is optional.'),     );     $options = Console_Getoptplus::getoptplus($config); 
  • 14. Console Command Line // Include the Console_CommandLine package. require_once 'Console/CommandLine.php'; // create the parser $parser = new Console_CommandLine(array(     'description' => 'zip given files using the php zip module.',     'version'     => '1.0.0' )); // add an option to make the program verbose $parser->addOption(     'verbose',     array(         'short_name'  => '-v',         'long_name'   => '--verbose',         'action'      => 'StoreTrue',         'description' => 'turn on verbose output'     ) ); …  
  • 15. Console Command Line …   // add an option to delete original files after zipping $parser->addOption(     'delete',     array(         'short_name'  => '-d',         'long_name'   => '--delete',         'action'      => 'StoreTrue',         'description' => 'delete original files after zip operation'     ) ); // run the parser try {     $result = $parser->parse();     // write your program here...     print_r($result->options);     print_r($result->args); } catch (Exception $exc) {     $parser->displayError($exc->getMessage()); }
  • 16. Console Getargs $config = array(             // Option takes 2 values             'files|images' => array('short' => 'f|i',                     'min' => 2,                     'max' => 2,                     'desc' => 'Set the source and destination image files.'),             // Option takes 1 value             'width' => array('short' => 'w',                  'min' => 1,                  'max' => 1,                  'desc' => 'Set the new width of the image.'),             // Option is a switch             'debug' => array('short' => 'd',                  'max' => 0,                  'desc' => 'Switch to debug mode.'),             // Option takes from 1 to 3 values, using the default value(s) if the arg is not pres             'formats' => array('min' => 1,                    'max' => 3,                    'desc' => 'Set the image destination format.',                    'default' => array('jpegbig', 'jpegsmall')), …  
  • 17. Console Getargs …               // Option takes from 1 to an unlimited number of values             'filters' => array('short' => 'fi',                    'min' => 1,                    'max' => -1,                    'desc' => 'Set the filters to be applied to the image upon conversion.  // The filters will be used in the order they are set.'),             // Option accept 1 value or nothing. If nothing, then the default value is used             'verbose' => array('short' => 'v',                    'min' => 0,                    'max' => 1,                    'desc' => 'Set the verbose level.',                    'default' => 3),             // Parameters. Anything leftover at the end of the command line is added.             CONSOLE_GETARGS_PARAMS => array('min' => 1,                         'max' => 2,                         'desc' =>                         'Set the application parameters.',                         'default' => 'DEFAULT')             );   $args =& Console_Getargs::factory($config);
  • 18. eZ  Components  -­‐  ConsoleTools $input  = new ezcConsoleInput(); $helpOption = $input->registerOption(      new ezcConsoleOption(          'h',         'help'     ) ); Try {     $input->process(); } catch ( ezcConsoleOptionException $e ) {     die( $e->getMessage() ); } if ( $helpOption->value !== false ) {     echo "Help requested."; } else {     echo "No help requested."; }
  • 19. TORNAR  EXECUTÁVEL   o/  
  • 20. #!/usr/bin/env  php  
  • 21. Ha  Ha  Ha   QUEM  DISSE?  
  • 22. EMPACOTE!!!!
  • 23. // create with alias "project.phar" $phar = new Phar('project.phar', 0, 'project.phar'); $phar->buildFromIterator(     new RecursiveIteratorIterator(      new RecursiveDirectoryIterator('/path/to/project')),     '/path/to/project'); $phar->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));
  • 24. Dúvidas?  
  • 25. Obrigado   •  •  •  •  E-­‐mail:  mrprompt@gmail.com   Twiler:  @mrprompt   Blog:  hlp://mrprompt.blogspot.com   Mais:  hlp://about.me/mrprompt  
  • Related Search
    We Need Your Support
    Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

    Thanks to everyone for your continued support.

    No, Thanks