آرمین
3 سال پیش توسط آرمین مطرح شد
5 پاسخ

فولدر كدهاي هسته لاراول

سلام
كدهاي هسته لاراول در چه فولدري هست؟
كدهاي هسته auth رو ديدم كه داخل يك trait بود و ميدونم كه trait فانكشن هاي پر تكرار در اون نوشته ميشه و مثل كلاس در كدهامون use ميكنيم
ميخوام بدونم فولدر كدهاي هسته لاراول در چه فولدري معمولاً قرار دارن و آيا همه كدهاي هسته لاراول فانكشن هايي هستن كه درون يك trait نوشته شدن يا درون class هم نوشته شده هست؟
ممنون ميشم تفاوت و زمان استفاده از trait و class رو در لاراول توضيح بدهيد
تشكر


ثبت پرسش جدید
Muhammad
تخصص : Back-End Developer
@muhammad 3 سال پیش آپدیت شد
1

سلام. فرق class و trait مربوط به PHP میشه و ربطی به لاراول نداره: شما می‌تونین توی یک کلاس از traitهای مختلفی استفاده کنین ولی نمی‌تونین از بیشتر از یک کلاس ارث‌بری کنین.

کدهای Auth تنها یک trait نیست و توی مسیر vendor\laravel\framework\src\Illuminate\auth قرار داره. یه پوشه عقب بیایید هم بقیه رو پیدا می‌کنین.


آرمین
@arminbeik 3 سال پیش مطرح شد
0

@muhammad
ما اگر كلاسي داشته باشيم كه توش از trait استفاده كرده باشيم وقتي بخواهيم اين كلاس رو در كلاس ديگري use كنيم به صورت اتوماتيك trait اون هم يوز ميشه يا بايد trait اون به صورت جداگانه use بشه؟


Muhammad
تخصص : Back-End Developer
@muhammad 3 سال پیش مطرح شد
0

شما نمی‌تونین کلاس رو با use داخل یه کلاس دیگه وارد کنین. شما می‌تونین با یک کلاس، از یک کلاس دیگه که از trait استفاده کرده extend کنین و متدهایی که داخل trait هست هم باهاش ارث برده میشه:

class A
{
   use SomeTrait;
}

class B extends A {}

آرمین
@arminbeik 3 سال پیش مطرح شد
0

@muhammad
اون قسمت كه فرموديد نميشه يك كلاس رو در كلاس ديگر use كرد رو متوجه نشدم
در لاراول مگر ما مثلا نماييم از كلاس آماده Request با يوز illuminate ازش در متد استور كنترلري كه يك كلاس هست استفاده كنيم؟


Muhammad
تخصص : Back-End Developer
@muhammad 3 سال پیش آپدیت شد
1

یعنی کلاس رو نمیشه مثل trait داخل کلاس دیگه‌ای با use وارد کرد.

class X {}

class Y {
    use X;
}

این غلطه.

کلاس Request رو هم شما داخل کلاس کنترلر خودتون نمی‌ذارین، بیرون کنترلر ایمپورت می‌کنین. یعنی Trait رو داخل کلاس با use میاریم، ولی ایمپورت‌کردن کلاس‌ها با Namespace بیرون کلاس انجام میشه. پس Request دیگه Trait نیست:

use App\Classes\OurClass;
use App\Traits\OurTrait;

class AnotherClass
{
    use OurTrait;
}

اگه بیرون کلاس اون ایمپورت‌هارو انجام نمی‌دادیم چی می‌شد؟ هیچی، باید آدرس کلاس رو هر بار دستی می‌نوشتیم. ولی وقتی بالا ایمپورت می‌کنیم، میشه فقط اسم کلاس رو نوشت و استفاده کرد.


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

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