راکت

یک سوال مربوط به trait

4 پاسخ

با سلام و خسته نباشید

خواستم بپرسم این که یک تابع داخل trait به صورت protected یا private تعریف کنیم چه معنی داره و به چه دردی میخوره شاید من درک درستی از Trait ها نداشته باشم
ممنون میشم راهنماییم کنید

کیهان
کیهان
@keyhan
ثبت پرسش جدید

پاسخ‌ها

4
Muhammad
Muhammad
@muhammad

تخصص: Back-End Developer

سلام
در واقع Trait برای به اشتراک‌گذاری بین کلاس‌هاست، و شما می‌تونید متدهای Private و Protected هم تعریف کنید، انگار همین متدهارو روی کلاس‌هایی که از این Trait استفاده می‌کنن نوشتید.
https://www.php.net/manual/en/language.oop5.traits.php

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

ما در PHP وراثت چند گانه نداریم
یعنی یه کلاس نمیتونه از چند کلاس ارث بری کنه
برای همین Trait ها رو داریم

اما متدهایی که داخل تریت ها تعریف میشند
از قوانین Encapsulation در شی گرایی PHP پیروی میکنند

پس متدها یا پراپرتی های protected و private به همون شکلی که در وراثت استفاده میشند، میتونند استفاده بشند

شاید پاسخ شما همین‌جا باشد

کیهان
کیهان
@keyhan

تخصص: PHP programmer

@ali.bayat
من از فرمایش شما به این نتیجه رسیدم صرفا فقط از قوانین encapsulation پیروی می کنند ، پس فرقی نمیکنه که protected یا private یا public باشن ؟

فرهاد محبی پور
فرهاد محبی پور
@farhad3d.mohebbi

تخصص: برنامه نویس backend

وقتی شما میخواید همزمان توی یک کلاستون از چند کلاس اکستند کنید و خب این امکان نیست توی php.
بنابراین میاید بقیه کلاس های مورد نیاز رو به صورت trait تعریف میکنید که بتونید با use کردنش از ویژگی های اون کلاس استفاده کنید

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام