اینکلود کردن فایل ها

پرسیده شده
فعالیت 1147 روز پیش
دیده شده 495 بار
0

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

تشکر.

فایل پیوست

Danial Rahimi
Danial Rahimi

21 اسفند 99

1
حذف شده

سلام و احترام

همین مبحث 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;

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

 

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

فایل پیوست

امیر صالحی

توسط

امیر صالحی

21 اسفند 99