Good ol' PHP

Good ol' PHP

Presentation by Rui Lima.

PHP ain't dead and it's like good wine, getting better every year. In this talk we'll go through what's new in PHP7, and how its new engine stands next to HHVM, while highlighting new syntax goodies.

B4fbb97c316798392c24b92f866c5ed6?s=128

Porto Codes

May 18, 2016
Tweet

Transcript

  1. Good ol’PHP @rapzo - may 18th - 2016 A tale

    on how to turn hate into love
  2. Rui Lima front-end developer @blippt Jack of all trades @exoticosembraga

    @rapzo github.com/rapzo @rapzo - may 18th - 2016
  3. PHP SUCKS!!1

  4. PHP stands for… Personal Home Page……… We came a loooong

    way Now it’s PHP: Hypertext Preprocessor... @rapzo - may 18th - 2016
  5. Back in the later 1990s and early 2000 php was

    the lingua franca for web development But it was bugged as hell @rapzo - may 18th - 2016
  6. php 5.3 came out and php-fig was created!! @rapzo -

    may 18th - 2016 2009
  7. psr-1 coding standards (who gives a damn) psr-2 code style

    (srsly?!?!) psr-3 LoggerInterface psr-4 ex-psr-0, the autoloading standard psr-6 CacheInterface (alright…) psr-7 http message interface (aleluia!!) @rapzo - may 18th - 2016 php-fig
  8. First community adopted package manager for PHP. Like many others,

    relies on github to solve its dependencies @rapzo - may 18th - 2016 composer
  9. @rapzo - may 18th - 2016

  10. @rapzo - may 18th - 2016 composer packagist is your

    friend!
  11. Yeah, this is like, what every other language already has...

  12. @rapzo - may 18th - 2016 language features from php

    5.3 onwards… the others are rubbish anyways... 5.3 the biggest leap 5.4 array shorthands, traits and a webserver! 5.5 generators (i yield!) and expressions in primitives 5.6 constant expressions, …$params notation 5.7 when everybody went bananas! long wait.... 7.0 major shift
  13. @rapzo - may 18th - 2016 php 5.3 namespaces for

    logically code separation late static binding for static inheritance closures don’t we just love to provide functions as arguments! nowdoc & heredoc output buffered content constants immutable data FTW! shorthand ternary ?: ‘hello’; dynamic access to static $a::$b \m/
  14. @rapzo - may 18th - 2016 php 5.3 namespaces for

    logically code separation
  15. @rapzo - may 18th - 2016 php 5.3 late static

    binding for static inheritance
  16. @rapzo - may 18th - 2016 php 5.3 closures don’t

    we just love to provide functions as arguments!
  17. @rapzo - may 18th - 2016 php 5.3 nowdoc &

    heredoc output buffered content
  18. @rapzo - may 18th - 2016 php 5.3 constants immutable

    data FTW!
  19. @rapzo - may 18th - 2016 php 5.3 shorthand ternary

    ?: ‘hello’;
  20. @rapzo - may 18th - 2016 php 5.3 dynamic access

    to static $a::$b \m/
  21. @rapzo - may 18th - 2016 php 5.4 traits for

    class decoration array short syntax no more array(‘a’ => ‘b’) function array deref hello()[0] closures can have a scope short open tags for echoing always available instantiating access (new ABC)->a()->b()->c() Class::{expressions} awesome! binary is now available session track for upload hooray progress bars webserver aleluia!
  22. @rapzo - may 18th - 2016 php 5.4 traits for

    class decoration
  23. @rapzo - may 18th - 2016 php 5.4 array short

    syntax no more array(‘a’ => ‘b’)
  24. @rapzo - may 18th - 2016 php 5.4 function array

    deref hello()[0]
  25. @rapzo - may 18th - 2016 php 5.4 closures can

    have a scope
  26. @rapzo - may 18th - 2016 php 5.4 short open

    tags for echoing always available
  27. @rapzo - may 18th - 2016 php 5.4 instantiating access

    (new ABC)->a()->b()->c()
  28. @rapzo - may 18th - 2016 php 5.4 Class::{expressions} awesome!

  29. @rapzo - may 18th - 2016 php 5.4 binary is

    now available
  30. @rapzo - may 18th - 2016 php 5.4 session track

    for upload hooray progress bars
  31. @rapzo - may 18th - 2016 php 5.4 webserver aleluia!

  32. @rapzo - may 18th - 2016 php 5.5 generators multiple

    results from the same function finally who haven’t discard an exception before primitives accept functions such as foreach empty() accepts expressions, like functions dereferencing for arrays and strings ::class for dynamic class name access OPcache for precompiled code storage
  33. @rapzo - may 18th - 2016 php 5.5 generators multiple

    results from the same function
  34. @rapzo - may 18th - 2016 php 5.5 finally who

    haven’t discard an exception before
  35. @rapzo - may 18th - 2016 php 5.5 primitives accept

    functions such as foreach
  36. @rapzo - may 18th - 2016 php 5.5 empty() accepts

    expressions, like functions
  37. @rapzo - may 18th - 2016 php 5.5 dereferencing for

    arrays and strings
  38. @rapzo - may 18th - 2016 php 5.5 ::class for

    dynamic class name access
  39. @rapzo - may 18th - 2016 php 5.5 OPcache for

    precompiled code storage
  40. @rapzo - may 18th - 2016 php 5.6 const expressions

    sometimes constants are not just constants const arrays heheh told ya! ... Rest params via array! Awesome! ...$params and spreading exponentiation right to left, never forget! use syntax for functions and constants via namespaces Class::__debugInfo for class var_dump
  41. @rapzo - may 18th - 2016 php 5.6 const expressions

    sometimes constants are not just constants
  42. @rapzo - may 18th - 2016 php 5.6 const arrays

    heheh told ya!
  43. @rapzo - may 18th - 2016 php 5.6 ... Rest

    params via array! Awesome!
  44. @rapzo - may 18th - 2016 php 5.6 ...$params and

    spreading
  45. @rapzo - may 18th - 2016 php 5.6 exponentiation right

    to left, never forget!
  46. @rapzo - may 18th - 2016 php 5.6 use syntax

    for functions and constants via namespaces
  47. @rapzo - may 18th - 2016 php 5.6 Class::__debugInfo for

    class var_dump
  48. @rapzo - may 18th - 2016 php 7.0 types for

    function arguments more types for return declarations null or bust isset($a) ? $a : ‘a’ = $a ?? ‘a’ spaceship op echo -1 <=> 1 good ol’define for arrays anonymous classes fire and forget! Closure::call() hello late closure calls assert() expectations, finally! use just got javascript’d use \some\{A,B,C}
  49. @rapzo - may 18th - 2016 php 7.0 types for

    function arguments
  50. @rapzo - may 18th - 2016 php 7.0 more types

    for return declarations
  51. @rapzo - may 18th - 2016 php 7.0 null or

    bust isset($a) ? $a : ‘a’ = $a = $a ?? ‘a’
  52. @rapzo - may 18th - 2016 php 7.0 spaceship op

    echo -1 <=> 1
  53. @rapzo - may 18th - 2016 php 7.0 good ol’define

    for arrays
  54. @rapzo - may 18th - 2016 php 7.0 anonymous classes

    fire and forget!
  55. @rapzo - may 18th - 2016 php 7.0 Closure::call() hello

    late closure calls
  56. @rapzo - may 18th - 2016 php 7.0 assert() expectations,

    finally!
  57. @rapzo - may 18th - 2016 php 7.0 use just

    got javascript’d use \some\{A,B,C}
  58. @rapzo - may 18th - 2016 HHVM php got sideways

    before announcing the 6th version, which made facebook develop its own virtual machine HHVM is a JIT compiler to bytecode and virtual machine that runs that bytecode
  59. @rapzo - may 18th - 2016 HHVM HHVM is not

    a replacement for php although it has a new language, strong typed, called Hack HHVM supports php and is 99,9% with the 7th version
  60. @rapzo - may 18th - 2016 HHVM and PHP In

    terms of performance, they are both fast In terms of deployment, HHVM is metal greedy
  61. @rapzo - may 18th - 2016 Next time... The real

    talk about php apps, laravel, lumen and building something!
  62. thank you!

  63. ?