آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

فراخوانی کلاس با ساخت آبجکت بصورت autoload

محسن موحد  11 سال پیش  11 سال پیش
+9 0

واسه حل مشکل include کردن کلاس ها احتمالا به این مشکل خوردیم که تمام کلاس ها رو یکجا include کردیم تا هرجا که خواستیم آبجکتی از اون کلاس بسازیم , فایل کلاس وجود داشته باشد , در نتیجه در هر اجرای برنامه تمام این فایل ها include میشن در حالی که ما به تمام این فایل ها احتیاجی نداریم.
یا اینکه در جاهای مختلف پروژه include ها رو اضافه کردیم.

خوب , برای اینکه هم performance پروژه بالا بره  و در حافظه ی رم صرفه جویی بشه از فانکشن spl_autoload_register استفاده میکنیم.
یک فانکشن برای include کلاس ها می سازیم و مسیری که کلاس هامون در اون فایل قرار داره رو بهش میدیم.
مثلا نام کلاس هامون به این شکله: myclass.class.php و در پوشه ی classes:

function my_autoloader($className)
{
    require_once 'classes/' . strtolower($className) . '.class.php';
}

حالا نام تابعی که ساختیمو (با هر نامی - توو این مثال: my_autoloader) به تابع spl میدیم:

spl_autoload_register('my_autoloader');

حالا هر جایی از پروژه آبجکتی new کنیم:

 $obj = new Test();


تابع spl_autoload_register  ,  تابع my_autoloader  اجرا میکنه و فایل  test.class.php در پروژه include میشه.

* require_once گذاشتیم تا اگر یکبار include شده بود در ساخت object های بعدی دوباره include نشه.

 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .