bidak
داره كولاك ميكنه!
پست: 121
عضو شده در: 29 تیر 1392
امتياز: 1376
|
عنوان: فراخوانی کلاس با ساخت آبجکت بصورت autoload |
|
|
واسه حل مشکل 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 کنیم:
تابع spl_autoload_register , تابع my_autoloader اجرا میکنه و فایل test.class.php در پروژه include میشه.
* require_once گذاشتیم تا اگر یکبار include شده بود در ساخت object های بعدی دوباره include نشه. |
|