برای اینکه متوجه مزایا و معایب و کاربردهایی Trait Classشویم بهتر است که ابتدا با مفهوم Mixin Class
آشنا شویم.
همانطور که می دانیم، جهت پیاده سازی یک شی ابتدا باید یک شی نمونه ایجاد کرد. برای این منظور یک نمونه کلاس تعریف میشود. Mixin Class کلاسی است که شامل متدهای کلاس های دیگر است. به عبارتی عملگرهای کلاس های دیگر را در خود نگه میدارد. این کلاس واسط هایی را فراهم میکند که از طریق آنها میتوان به متدهای درون کلاس دسترسی پیدا کرد. در واقع متدهای مشترکی که اغلب کلاس ها به آن نیاز دارند در Mixin Class تعریف میشوند. چرا که نمیتوان همه ی این متدها را در داخل سایر کلاسها تعریف کرد. بنابراین همه متدها در یک کلاس تعریف میشود تا در صورت نیاز، هرکدام از کلاسها بتوانند از عملگر موردنظر موجود در Mixin Class استفاده کنند و از آن ارث ببرند.
کلاس trait ها یک مفهومی است که در php ورژن 5.4 معرفی شد و کاربرد اصلی اونها از بین بردن محدودیتی بود که کلاس های php با آن روبه رو بودند. یکی از مشکلاتی که در PHP به عنوان یک زبان برنامه نویسی وجود دارد این است که تنها می تواند یک ارث بری داشته باشد. این به این معنی است که یک کلاس تنها می تواند از یک کلاس دیگر ارث ببرد.با این حال، در بسیاری از مواقع ارث بری از چندین کلاس می تواند مفید باشد. به عنوان مثال،ارث بری متدها از چندین کلاس مختلف برای جلوگیری از تکرار کدها مطلوب و پرکاربرد است.
کلاس trait یک صفت نوعی مانند Mixin است که اجازه می دهد کلاس های Trait را به یک کلاس موجود اضافه کنید. این بدان معنی است که شما می توانید کدهای تکراری را کاهش دهید و مزیت های زیادی را ضمن اجتناب از مشکلات ارث بری چندگانه به دست آورید.
برای اینکه بیشتر با مثالها و نحوه ی چگونگی استفاده از کلاس trait آشنا شوید پیشنهاد میکنم مقاله ی "هر آنچه که باید از php trait بدونیم" خوانده شود زیرا مفصلا به مثالها و ارورهای احتمالی و ... پرداخته است.