ساخت توابع پویا
وقتی در حال نوشتن برنامه های نسبتا پیچیده هستید حتما نیاز دارید که توابعی بسازید که نام متغییر دارند یا عمل متغییر انجام می دهند. یعنی در حین اجرای برنامه توابعی بسازید که از قبل در برنامه نبودند و بر اساس داده های متغییر آن ها ساخته می شوند. این کار برنامه شما را حرفه ای تر می سازد. اگر این قسمت برای شما کمی گنگ است نگران نباشید به مثال ها توجه کنید و آن ها را تست کنید. برای انجام این کار دو راه وجود دارد. ابتدا به مثال زیر توجه کنید :
$functionName = "dfun"; $$functionName = function($args) { print_r(str_split($args)); }; $args = 'salam'; $dfun($args);
این کد یک تابع پویا با نام dfun ایجاد می کند و بصورت ()dfun$ فراخوانی می شود. این تابع یک پارامتر (رشته) دریافت می کند و آرایه کاراکتر های رشته را چاپ می نماید. اینکه چه تعداد پارامتر می خواهید ایجاد کنید و میخواهید چه عملی روی ورودی ها انجام دهید بستگی به خود شما دارد و محدودیتی ندارد. اما این روش یک عیب دارد ، اینکه تابع را باید با نام متغییر فراخوانی کنید و از علامت $ استفاده کنید. روش دوم که توابع کاملا استاندارد می سازد این محدودیت را ندارد. به مثال زیر توجه کنید :
$func = ' function get_snippets($after) { return "http://snippets.ir".$after; } function _snippets($before , $after) { echo $before."http://snippets.ir".$after; } '; eval($func);
این کد دو تابع get_snippets و snippets_ را تولید می کند و بصورت عادی می توانید آن ها را فراخوانی کنید.