Il est intéressant d’utiliser les Trait mais il faut éviter d’utiliser un constructeur car si vous devez écrire un constructeur dans une class qui utilise votre trait, alors le constructeur de votre trait sera surchargé et donc non exécuté.
Si toute fois vous souhaitez utiliser un constructeur dans votre trait et souhaitez initialiser des propriétés dans votre class, utilisez l’exemple suivant
trait Json{ public $meta; public $links; public $filters; public function __construct(){ $this->meta=[]; $this->links=[]; if(method_exists($this, 'set_filters')){ $this->filters = $this->set_filters(); } } }
class SiteController extends Controller { use Json; public function set_filters(){ return [ 'doc' => [ 'in'=>'get', 'description'=>'affiche la documentation en fonction de la méthode http demandée', ], ]; } }