Successfully reported this slideshow.

PHP Experience 2016 - [Palestra] 20×20: PHP Freakshow – O estranho, o esquisito e o raro

0

Share

Loading in …3
×
1 of 21
1 of 21

PHP Experience 2016 - [Palestra] 20×20: PHP Freakshow – O estranho, o esquisito e o raro

0

Share

Download to read offline

Leonardo Tumadjian, Web Consultant e Professor da Impacta Tecnologia, fez a palestra "20×20: PHP Freakshow – O estranho, o esquisito e o raro", no PHP Experience 2016.

O iMasters PHP Experience 2016 aconteceu nos dias 21 e 22 de Março de 2015, no Hotel Tivoli em São Paulo-SP
http://phpexperience2016.imasters.com.br/

Leonardo Tumadjian, Web Consultant e Professor da Impacta Tecnologia, fez a palestra "20×20: PHP Freakshow – O estranho, o esquisito e o raro", no PHP Experience 2016.

O iMasters PHP Experience 2016 aconteceu nos dias 21 e 22 de Março de 2015, no Hotel Tivoli em São Paulo-SP
http://phpexperience2016.imasters.com.br/

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

PHP Experience 2016 - [Palestra] 20×20: PHP Freakshow – O estranho, o esquisito e o raro

  1. 1. PHP FREAKSHOW LEONARDO TUMADJIAN PHP EXPERIENCE 2016
  2. 2. ANTES DE COMEÇARMOS: Contribua com sua comunidade mais próxima, se tiver um tempo ;) Como contribuir?
  3. 3. ATENÇÃO! O conteúdo a seguir pode conter cenas fortes, códigos sujos, violência contra as boas práticas, esquisitices, loucuras e muito mais.. Em caso de fortes problemas cardíacos prefira: Design Patterns, SOLID, DDD e etc.. Não tente fazer isso em casa, e muito menos no trabalho, obrigado!
  4. 4. WELLCOME! Sejam bem vindos ao PHP Freak Show, o show já vai começar, preparem-se.
  5. 5. VARIÁVEIS VARIÁVEIS! $freak = 'ola'; $ola = 'como';  $como = 'vai';  $vai = 'voce';  $voce = 'cara'; $cara = 'zoeira';  $zoeira = 'never ends!';  echo $$$$$$$freak; // Imprime: never ends!? // ... class Robot  private $precious1 = 'Nooo 1';  protected $precious2 = 'Nooo 2';  public function __get($prop)  {      return $this­>$prop; // <­ Explodindo o encapsulamento!  }  // ...  $robot = new Robot();  echo $robot­>precious1; // Nooo 1  echo $robot­>precious2; // Nooo 2
  6. 6. AGORA A ABERRAÇÃO: Ainda mais... // ...  $obj = 'myRobot';  $class = 'Robot';  $param1 = 'Robotron';  $param2 = 5532;         $method = 'say';  $word = 'Hello Humans';  $$obj = (new $class($param1, $param2))­>$method($word); // Imprime Hello Humans  // ...
  7. 7. STANDARD PHP LIBRARY USAREMOS: 1. ArrayIterator 2. ArrayAccess(Interface)
  8. 8. PRIMEIRA LOUCURA class Writer extends ArrayIterator  {      public function offsetGet($index)       {         echo $index . ' ';          return $this;      } }  $whiter = new Writer();  $whiter['Hello']['World']; // Imprime: Hello World  $whiter['But']['when']['this']['is']['over?']; // Imprime: But when this is over?
  9. 9. SEMPRE PODE PIORAR!
  10. 10. POSSO? class Crazy implements ArrayAccess   {      // ... some code here      public function offsetGet($offset)       {         $this­>phrase[] = $this­>tagIn() . $offset . $this­>tagOut();          return $this;      }     // ...      public function color($colorHex)      {         $last = &$this­>phrase[count($this­>phrase)­1];          $last = '<div style="color: ' . $colorHex .'">'                  . $last . '</div>';          return $this;      }     // ... more code bellow  }
  11. 11. AGORA VAMOS USA-LA? E agora? Onde está seu deus? // Using the class Crazy! Roda no PHP 7!  (new Crazy)      ['só da']­>color('brown')      ['loco']      ['aqui']­>color('red')      ['olha o que']      ['esse barba']      ['esta']­>color('blue')      ['fazendo']     ['que']­>color('red')      ['maluco']      ['das']­>color('green')      ['ideias']  ­>write();
  12. 12. VARIADICS PHP 5.6+ $class = 'Robot';  $method = 'talk';  $arr = ['hello', 'world'];  // Old but GOLD  call_user_func_array([new $class, $method], $arr); // OR WARNING PHP 5.6+  $robot = (new $class)­>$method(...$arr);
  13. 13. MÉTODOS MÁGICOS O mago Aos Javeiros!
  14. 14. Usando o método __call class DataMaker {      protected $matrix;      // ...      public function __call($name, $args)       {         $this­>matrix[$name] = $args[0];          return $this;      }     // ...  } $dados = (new DataMaker)          ­>nome('Leonardo')          ­>telefone('11 95555­2233')          ­>endereco('Rua Teste 123')          ­>teste('colocando char especial')          ­>toClass('Customer');            var_dump($dados);
  15. 15. RETORNO: object(Customer)[2]    public 'nome' => string 'Leonardo' (length=8)    public 'telefone' => string '11 97379­7752' (length=13)    public 'endereco' => string 'Rua Teste 123' (length=13)    public 'teste' => string 'colocando char especial' (length=23)
  16. 16. ALGUMAS IDEIAS USANDO UM ROUTER: // A crazy Router interface  (new GET)['/ola']         ­>controller('Carro')          ­>action('hello');            // A Fluid Interface Programming  request('POST')      ­>to('/cliente')      ­>controller('Carro')      ­>action('hello');  // Pratical Router  $post = new Post; $post['/hello'] = function ($name) {      return 'Hello ' . $name;  };
  17. 17. BOM ACHO QUE ACABAMOS.. // freak instanciator  function __($class, array $parms=[]) {      return new $class(...$parms); } __('FreakPower')      [function () {          echo '1';      }][function () {          echo '2';      }][function () {          echo '3';      }][function () {          echo '4';      }][function () {          echo '5';      }] ­>fire(); // Dispara as closures aleatoriamente, Imprime, ex: 43152 Hey! espera! não, não faça isso!
  18. 18. UTILIDADE PÚBLICA.. Owesome solution by Ocramius $reader = function & ($object, $property) {      $value = & Closure::bind(function & () use ($property) {          return $this­>$property;      }, $object, $object)­>__invoke();      return $value; }; $kitchen = new Kitchen();  $cake    = & $reader($kitchen, 'cake'); // $this­>cake is private  $cake    = 'sorry, I ate it!';  var_dump($kitchen); Reference: Accessing private PHP class members without reflection
  19. 19. ESPERO QUE TENHAM GOSTADO “Yolo lo!” ―Mago do Age of Empires use function yoloy;  yoloyolisp(y('yoloyolo',      y('lambda', y('request'),           y('new', YoLoresPONsE::clASS, y('quote', "yolo u{1f640}"))      ) )); https://yolophp.computer/ https://github.com/igorw/yolo
  20. 20. OBRIGADO!
  21. 21. HTTPS://JOIND.IN/TALK/328B5 SLIDES E EXEMPLOS EM: HTTPS://GITHUB.COM/LEOQBC/PHP-FREAKSHOW2

×