كنترل پنل             جستجو               پرسشهای متداول            .:: آخرین پست‌های انجمن ::.            لیست اعضا            مدیران سایت             درجات        ورود
فهرست انجمن‌ها -> برنامه‌نويسي تحت وب -> زبان برنامه‌نويسي PHP
پاسخ دادن به این موضوع
فراخوانی کلاس با ساخت آبجکت بصورت autoload
پست تاریخ: چهار‌شنبه 17 دی 1393 - 14:34    
bidak
داره كولاك مي‌كنه!
داره كولاك مي‌كنه!


پست: 121
عضو شده در: 29 تیر 1392

blank.gif


امتياز: 1376

عنوان: فراخوانی کلاس با ساخت آبجکت بصورت autoload خواندن مشخصات فردی ارسال پیام شخصی ارسال email

واسه حل مشکل 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 نشه.

[ وضعيت كاربر: ]

تشکر کردن از پست  پاسخگویی به این موضوع بهمراه نقل قول 
تشکرها از این پست: sima_vafa (چهار‌شنبه 17 دی 1393 - 21:25) Hamid (پنج‌شنبه 18 دی 1393 - 20:46)

پست تاریخ: پنج‌شنبه 18 دی 1393 - 20:48    
Hamid
مدیريت كل سایت
مدیريت كل سایت


پست: 5494
عضو شده در: 31 اردیبهشت 1384
محل سکونت: -::ساوه::-
iran.gif


امتياز: 47774

عنوان: پاسخ به «فراخوانی کلاس با ساخت آبجکت بصورت autoload» خواندن مشخصات فردی ارسال پیام شخصی

جالب بود.
توی برنامه‌های بزرگ‌تر این include های زائد و البته، بیشتر این new گرفتن‌های زائد کلی از RAM سرور رو اشغال می‌کنه و مصیبت می‌شه...
روش خوبی بود. تشکر

[ وضعيت كاربر: ]

تشکر کردن از پست  پاسخگویی به این موضوع بهمراه نقل قول 
تشکرها از این پست: bidak (پنج‌شنبه 18 دی 1393 - 20:49)


نمایش پستها:                 مشاهده موضوع قبلی :: مشاهده موضوع بعدی  
پاسخ دادن به این موضوع
 

صفحه 1 از 1

تمام زمانها بر حسب GMT + 3.5 Hours می‌باشند
 Related Topics 


 information 

 

پرش به:  
شما نمی توانید در این بخش موضوع جدید پست کنید
شما نمی توانید در این بخش به موضوعها پاسخ دهید
شما نمی توانید موضوع های خودتان را در این بخش ویرایش کنید
شما نمی توانید موضوع های خودتان را در این بخش حذف کنید
شما نمی توانید در این بخش رای دهید


Copyright 2004-2024. All rights reserved.
© by Aftabgardan Cultural Center : Aftab.cc