Traits are the most noted addition in PHP 5.4: they consist of code fragments which could be reused horizontally across classes. In other languages multiple inheritance or mixins address this issue, but traits are more similar to the latter: they do not provide state in the form of properties, but only an interpreter-assisted copy&paste of methods.

Code reuse is one of the many goals those OOP languages try to achieve with inheritance. Unfortunately, single inheritance very often makes the developer either reuse the codes or start with a conceptual clean class from scratch. To achieve code reuse, methods have either to be duplicated or to be moved near the root of the class hierarchy, but this hampers readability, understandability and maintainability of code.

To overcome these issues, multiple inheritance and Mixins have been invented in other languages. But both of them are complex and hard to understand. PHP5 has been explicitly designed with Java in mind: single inheritance, but multiple interfaces. If we look at some sample codes, things will become clearer:

 <?php
 trait ezcReflectionReturnInfo {
   function getReturnType() { /*1*/ }
   function getReturnDescription() { /*2*/ }
 }
 
 class ezcReflectionMethod extends ReflectionMethod {
   use ezcReflectionReturnInfo;
   /* ... */
 }
 
 class ezcReflectionFunction extends ReflectionFunction {
   use ezcReflectionReturnInfo;
   /* ... */
 }
 ?>

Code sample borrowed from PHP RFC Wiki: https://wiki.php.net/rfc/horizontalreuse

Traits is going to make developers lives much more simpler with great power and flexibility.