Very late answer, but: @BenMorel it seems like you're expecting Traits to behave like Interfaces, but Traits and Interfaces aren't the same thing and are not designed for the same purpose.
An Interface is a contract to the outside world which ensures every implementing class can be used identically. Any class which deviates in any method signature breaks the Interface, and is rightly flagged by the PHP interpreter when it encounters the class definition — even before the class is instantiated.
The Interface contract is so important to the outside world that a class's interface list appears before the implementing class's opening braces:
class Foo implements FooInterface, BarInterface {
// method definitions here...
}
Meanwhilst, a Trait is a convenience to allow code reuse inside a class. The Trait-based code which is reused may in fact be completely private and remain invisible to the user of the class.
Traits' relative unimportance to the outside world is reflected in the fact that Trait references appear between the referring class's curly braces — making them less visible than Interface references:
class Foo implements FooInterface, BarInterface {
use FooTrait, BarTrait;
// method definitions here...
}
The accepted answer is fully correct of course. I just felt some further distinction between Interfaces and Traits might be helpful.