<rmcreative>

RSS

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

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

    (2)
    (1)
  1. traits и члены класса

    1 октября 2011

    traits в PHP 5.4 — довольно занятный механизм. Хотя, приведённое ниже в официальном мануале не показывается (возможно, решили перестраховаться), но работает:

    trait MyTrait
    {
        public $traitVar = 'trait var';
     
        public function test()
        {
            echo $this->traitVar;
            echo $this->classVar;
        }
    }
     
    class MyClass
    {
        private $classVar = 'class var';
        use MyTrait;
    }
     
    $c = new MyClass();
    $c->test();
    echo $c->traitVar;
    28 комментариев
  2. 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 комментариев