php Статические свойства/поля в трейтах (по факту -- статические переменные)

На статические переменные можно ссылаться внутри методов трейта, но нельзя определить статические переменные в самом трейте. Тем не менее, трейт может описывать статические методы для демонстрации класса.

Например:



<?php
trait Counter {
    public function inc() {
        static $c = 0;
        $c = $c + 1;
        echo "$c\n";
    }
}

class C1 {
    use Counter;
}

class C2 {
    use Counter;
}

$o = new C1(); $o->inc(); // echo 1
$p = new C2(); $p->inc(); // echo 1
?>

-- в этом примере использована статическая переменная внутри метода, инициализация которой происходит только один раз.

Подробнее о статических членах трейтов: https://secure.php.net/manual/ru/languag...

Key Words for FKN + antitotal forum (CS VSU):