💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ Danial Rahimi
اینکلود کردن فایل ها
جامعه پی اچ پی ایجاد شده در ۲۱ اسفند ۱۳۹۹

سلام ، میشه به صورت کامل و جامع درمورد اینکلود کردن فایل‌ها و در دستررس بودن اونها در فایل‌های دیگر توضیح بدید؟

تشکر.

سلام و احترام

همین مبحث autoloading رو خیلی خوب یاد بگیرید که با استفاده از composer میشه این کار رو خیلی ساده انجام داد. برای اینکه بخواید تمامی کلاس‌ها در دسترس شما باشند، اگه از autoloading استفاده کرده باشید کافیه که فقط 

اون‌ها رو use کنید و کلاس در دسترس شما خواهد بود. توی این جلسه اگه اشتباه نکنم خودتون یک autoloader ساختید، حالا غیر از این مورد شما میتونید از composer برای این مورد استفاده کنید. مثالی که خودمون بیایم یک autoloader بسازیم:

spl_autoload_register(function ($class_name) {
    include $class_name . '.php';
});
$obj  = new MyClass1();

که توی این ویدیو باهاش آشنا شدیم (اگه این مورد براتون گنگ بود بگید تا بهتون توضیح بدم)

 

اما اگه بخوایم از composer استفاده کنیم این قضیه خیلی ساده‌تر میشه، اما باید دقیقا چی کار کنیم؟

   "autoload": {
        "psr-4": {
            "App": "app/",
        }
    },

مثل بالا توی فایل composer.json این کانفیگ رو اضافه میکنیم که طبق اصل psr-۴ هستش، اگه دوست داشتید دربارش بخونید میتونید به این لینک https://www.php-fig.org/psr/psr-۴/ مراجعه کنید. توی براکت psr-۴ باید یک key و value قرار بدیم، که key ما اون نام namespace اصلی میشه که تو مثال بالا App هستش و به عنوان value با نام پوشه رو بدیم که نام namespace بهش اشاره داره، که توی مثال بالا پوشه app هستش

حالا هرجا شما از namespace که با App شروع بشه استفاده کنید در حقیقت دارید به پوشه app اشاره میکنید. 

برای اینکه تغییرات توی composer اعمال بشه دستور زیر رو بزنید

composer dumpautoload

داخل پوشه app شما به ازای هر پوشه ای که میسازید نام اون پوشه میشه ادامه namespace شما، برای مثال اگه پوشه زیر رو دارید:

app > traits

namespace شما باید به این شکل باشه:

App\Traits

حالا برای مثال داخل همین پوشه traits شما یک کلاس به اسم Verifiable داشته باشید (اسم کلاس هر چیزی میتونه باشه) برای استفاده از این کلاس شما باید کلاس رو use کنید، به شکل زیر:

use App\Traits\Verifiable;

حالا در کد شما این کلاس در دسترس هستش و شما میتونید ازش استفاده کنید

 

باز اگه سوالی بود یا چیزی گنگ بود بپرسید من در خدمتم، موفق باشید

امیر صالحی ۲۱ اسفند ۱۳۹۹، ۱۵:۰۲