%d8%b4%db%8c-%da%af%d8%b1%d8%a7%db%8c%db%8c-%d8%af%d8%b1-php-%d8%a8%d8%ae%d8%b4-%d9%86%d9%87%d9%85-autoload-wpmen

در بخش قبلی در خصوص متدهای جادویی صحبت کردیم در اینجا می خواهیم در خصوص autoload ها صحبت کنیم با مردان وردپرس همراه باشید.

تابع autoload به صورت خودکار کلاس های مورد نظر ما را به برنامه اضافه ( include ) می کند و دیگر لازم نیست  ابتدای هر صفحه ، کل صفحه هایی که کد های  ما در آن است را به صفحه مورد نیاز  الحاق کرده و کلاس ها را تکرار کنیم. در php5 می توانید با استفاده از تابع autoload دربرنامه نویسی شی گرا ، کار خود را بسیار آسان کنید با autoload ، تمام کلاس ها و فایل های مورد نیاز را الحاق کنیم سپس در هر صفحه فقط این فایل را اضافه کنیم.

برای اینکار ابتدا ما تمام کلاس های خود را می سازیم مانند 

  • users.php
  • teachers.php
  • students.php

 

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

حال برای فراخوانی کلاس ها نیازی نیست تمام فایل ها را include کنیم کافیست با تابع autoload تمام فایل ها را فراخوانی کنیم. دقت داشته باشید که ما تمام فایل های کلاس را در پوشه classes ذخیره کرده ایم و با تابع فراخوانی می شوند.

 

function __autoload($class) {
 require_once 'classes/'.$class . '.php';
 }

حال کافیست فقط کلاس ها را صدا بزنید و از آنها در پروژه خود استفاده نمایید.

نکته: اگر می خواهید کلاس ها را اینگونه صدا بزنید باید به اجبار نام کلاس داخل فایل php با نام فایل php برابر باشد.

مانند user.php  که کلاس آن به صورت زیر می باشد

 


class user{

}

می توانید این تابع را گسترش دهید و کمی هوشمندتر کنید. مثلا ابتدا چک کند تا از وجود فایل کلاس مطمئن شود بعد کلاس را اضافه کند یا ممکن است فایل های کلاس در پوشه های مختلفی باشند. تابعی که کارهای فوق را انجام دهد همین است.

 

function __autoload($class) {
 $classpath = 'classes/'.$class . '.php';
 if ( file_exists($classpath){
 require_once $classpath;
 }
 $classpath = 'libs/'.$class . '.php';
 if ( file_exists($classpath) {
 require_once $classpath;
 }

اگر تمایل به دریافت فایل تابع autoload بودید می توانید از اینجا آن را دانلود کنید.

منبع :‌ مردان وردپرس

تاریخ آخرین بروزرسانی : ۲ آذر ۱۳۹۵
میلاد میلادی

باور هایت را که پرورش دهی به هرچیزی دست خواهی یافت.

ارسال نظر

آدرس الکترونیکی شما نمایش داده نمی شود *

Time limit is exhausted. Please reload CAPTCHA.