<rmcreative>

RSS

Все заметки с тегом «trunk»

Можно уточнить:

  1. Traits в trunk PHP

    26 августа 2010

    Вот и traits попали в транк PHP.

    Данная возможность была придумана как альтернатива множественному наследованию и mixin-ам. trait представляет собой набор PHP-кода (обычно это методы), который можно использовать в своём классе. Фактически trait — поддерживаемый на уровне языка умный copy-paste.

    trait Dumper {
      public function dump($var){
        echo '<pre>'.print_r($var, true).'</pre>';
      }
    }
     
    class MyClass {
      use Dumper;
    }
     
    $myClass = new MyClass();
    $myClass->dump('test');

    MyClass в итоге будет выглядеть как:

    class MyClass {
      public function dump($var){
        echo '<pre>'.print_r($var, true).'</pre>';
      }
    }

    Это самый простой случай. Более сложные и интересные вещи, такие как подмена имени метода при подключении, разрешение конфликтов, trait-ы из trait-ов, требования к классу, описаны на английском в wiki.

    16 комментариев
  2. Разыменование массивов в trunk PHP

    1 августа 2010

    Ещё одна приятная новость. В транк PHP 5.4 (который, возможно, будет в итоге выпущен как PHP 6) попала очень полезная возможность — разыменование массивов:

    function test() {
        return array("one" => "PHP", "two" => "trunk", "three" => "is very cool");
    }
    echo test()["two"]; // !!!

    То есть теперь можно обращаться к индексу массива, возвращаемого из метода.

    17 комментариев
  3. JsonSerializable

    3 июня 2010

    И ещё одна довольно интересная штука, попавшая в транк PHP. На этот раз речь о json_encode. Как известно, он отлично работает с массивами и даже работает с объектами. Вот с объектами как раз тут не всё так просто: возможно необходимо сделать какую-то предварительную обработку или выкинуть часть свойств.

    В последнем коде можно сделать так:

    class MyObject implements JsonSerializable {
      private $test1, $test2;
      public $x = 10;
     
      function __construct($test1, $test2) {
        $this->test1 = $test1;
        $this->test2 = $test2;
      }
     
      // json_encode будет работать с результатом этого метода
      function jsonSerialize(){    
        return array($this->x, $this->test1);
      }
    }
    6 комментариев
  4. Type hinting в PHP

    5 июля 2009

    Довольно давно уже пользуюсь проверкой типов в методах. С тех пор как начал работать с PHP после Java. Очень удобно:

    interface Processor {
        function processData();
    }
     
    class DataProcessingModule implements Processor {
        public function processData() {
        return 'processed data';
        }
    }
     
    function process(Processor $processor = null) {
        if($processor===null) return false;
        return $processor->processData();
    }

    Читаем

    Комментировать