{ use Counter; } class C2 { use WithConstructor; } // trait test method (new C())->test(); (new C())->newTest(); // 42 echo (new C())->h . PHP_EOL; // fatal: call to protected method //(new C())->pub(); // works (new C())->newPriv(); (new C())->abs(); // works (new C())->getPrivateFromTrait(); // notice: undefined (new C())->getPrivateFromClass(); $c = new C(); $c->incr(); $c->incr(); // 2 $c1 = new C1(); $c1->incr(); // 1 $c2 = new C2(); // trait constructor echo PHP_EOL;