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

Command Line PHP Basics

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Command Line PHP Basics

Avatar for Jason Lotito

Jason Lotito

January 21, 2013
Tweet

More Decks by Jason Lotito

Other Decks in Technology

Transcript

  1. ./phpcl --overview • Basic PHP Commands • PHP Scripts •

    Arguments • Real World Example Tuesday, February 19, 13
  2. php -v → php -v PHP 5.3.15 with Suhosin-Patch (cli)

    (built: Aug 24 2012 17:45:44) Copyright (c) 1997-2012 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies Tuesday, February 19, 13
  3. php --ini → php --ini Configuration File (php.ini) Path: /etc

    Loaded Configuration File: /private/etc/php.ini Scan for additional .ini files in: (none) Additional .ini files parsed: (none) Tuesday, February 19, 13
  4. php -l → php -l stdin.php No syntax errors detected

    in stdin.php Tuesday, February 19, 13
  5. php -l → php -l stdin.php PHP Parse error: parse

    error in stdin.php on line 5 Errors parsing stdin.php Tuesday, February 19, 13
  6. php -l • Automate during rollup, commits • Prevent silly

    mistakes, because, let’s face it, you aren’t doing TDD • Sometimes tools might modify output, even accidentally • Ensures code can run on the version of PHP installed Tuesday, February 19, 13
  7. php -a PHP’s interactive shell Not quite a REPL, doesn’t

    really matter (Read-Evaluate-Print Loop) Tuesday, February 19, 13
  8. php -a → php -a Interactive shell php > $a

    = range(1,3); php > var_dump($a); array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } Tuesday, February 19, 13
  9. php -a php > class Foo { public $bar =

    'baz'; } php > $foo = new Foo(); php > echo $foo->bar; baz Tuesday, February 19, 13
  10. php -a php > function p($v){ php { echo md5('this_is_really_secure_right?'.$v);

    php { } php > p(134); bb33942de0b7f8f7fda76ef41ee55654 php > p('happy'); fbc327fa6e16a971130d72bd72e7e55f Tuesday, February 19, 13
  11. php -a php > var_dump(array()===array()); bool(true) php > var_dump( ((array)

    new stdClass()) === array() ); bool(true) php > class Foo{function __toString(){return '';}} php > $foo = new Foo(); php > var_dump( ((string) $foo) === '' ); bool(true) Tuesday, February 19, 13
  12. php -a • Great for resolving quick question • Winning

    arguments • Temporary scripts, functions Tuesday, February 19, 13
  13. php -a • Has autocomplete php > new PDO PDO

    pdo_drivers PDOException PDORow PDOStatement Tuesday, February 19, 13
  14. Running Scripts • Command Line • $ php ./script.php •

    Bash Bang • #!/usr/bin/php Tuesday, February 19, 13
  15. Command Line • Useful for executing code that might also

    run from a web server • Doesn’t assume existing installation directory Tuesday, February 19, 13
  16. Bash Bang • $ ./script.php • $ ./script • $

    script • #!/usr/bin/env php > #!/usr/bin/php Tuesday, February 19, 13
  17. getopt <?php $options = getopt("f:hp:"); var_dump($options); → php ./getopt.php -f

    hello -p asdf -h array(3) { ["f"]=> string(5) "hello" ["p"]=> string(4) "asdf" ["h"]=> bool(false) } Tuesday, February 19, 13
  18. getopt • f: - Required value • v:: - Optional

    value • a - No value • $opts = getopt(‘f:v::a’); Tuesday, February 19, 13
  19. getopt long options • $longOptions = array( • ‘required:’, •

    ‘optional::’, • ‘option’ • ); • $ script --required 123 --optional=”value is here” --option Tuesday, February 19, 13
  20. getopt • php.net/getopt • > 5.3 Works on windows, plus

    support for ::, =, and longopts • < 5.3 misses those critical features Tuesday, February 19, 13