احمد نادری

توسعه دهنده فول استک

author
author

احمد نادری

توسعه دهنده فول استک

تابع در php

توابع در زبان php کدهایی هستند که یک بار خاص رو انجام میدن . علاوه بر وجود توابع آماده بسیار زیاد میتونیم خودمون هم توابع مورد نظرمون رو بسیازیم .

برای ساخت تابع به شکل زیر عمل میکنیم :

function functionName($first_parameter, $second_parameter)
{
    // code
}

برای فراخوانی توابع از شکل زیر استفاده میکنیم :

functionName($first_parameter,$second_parameter);

 

نکات : 

۱- میتوان برای پارامترهای توابع مقدار پیش فرض تعیین کرد. پارامترهایی که مقادیر پیش فرض دارند آخر سر میان یعنی :

function functionName($first_parameter, $second_parameter , $param = "abc") {
 // code 
}

نحوه ارسال آرگومان ها به توابع دو شکل دارد : ۱- با مقدار ۲- با ارجاع . تفاوت این دو در اینه که در روش ارجاع  با تغییر مقدار اون در بدنه‌ی تابع، مقدار اون در بیرون از تابع نیز تغییر می‌کنه. در ارجاع قبل از $ یک & قرار میدیم . مثلا :

function multiplyBy2AndChange(&$number)
{    
 ///
}

توابع بدون نام: مشابه توابع عادی هستند با این تفاوت که آن‌ها اسمی ندارند و میتونیم اونارو را داخل متغیرها ذخیره کنیم.

۱-توابع فلشی (arrow functions): از کلیدواژه‌ی fn و برای تعیین خروجی از عملگر => استفاده میشه . بیشتر برای توابعی که پیچیدگی خاصی ندارند کاربرد داره . برای بخش خروجی هم از عبارت return استفاده نمیشه.

$value = fn($param) => (return_expression);

۲-توابع عادی بدون نام ( Closure یا Lambda ) : مثل توابع عادی هستند فقط اسم ندارند و نتیجشون رو هم داخل یک متغیر ذخیره میکنیم . بر خلاف توابع عادی قرار دادن ; تو این نوع توابع اجباریه .

$value = function ($param)
{
    return $param < 0;
};

فراخوانی توابع بدون نام مشابه فراخوانی یک متغیره، با این تفاوت که به اون  پارامتر هم میدیم. مثلا :

$result = $value(12);

 


دسترسی به متغیرهای بیرون تابع

در زبان PHP کد درون توابع به عنوان یک اسکوپ (scope) ایزوله در نظر گرفته میشه و دسترسی به متغیرهای خارج از تابع به صورت عادی امکان‌پذیر نیست.  .متغیرهای بیرون تابع global scope و متغیرهای درون یک تابع local scope محسوب میشن.

برای ارجاع یک متغیر از بیرون تابع به درون:

۱- استفاده از use  مثل :

function($param1, $param2, ...) use ($var1, $var2, ...) {
    ...
}

در توابع فلشی بدون استفاده از use دسترسی به متغیرهای بیرون تابع ممکنه و در توابع معمولی، استفاده از این عبارت ممکن نیست.

۲- استفاده از کلیدواژه‌ی global:

$value = 1;

function fun($str) {
    global $value;
    return value * str;
}

 

درباره من
  • سلام به وب سایت من خوش اومدید ! از سال 1388 که وارد دنیای برنامه نویسی شدم تجربیات خودم رو از پروژه های مختلف به دست آوردم و همیشه سعی کردم تا مهارت های فنی و رفتاری خودم رو ارتقا بدم تا بتونم برای خودم و سازمانی که در آن کار می کنم بهترین باشم . من عاشق یادگیری هستم و همیشه از چالش های جدید هیجان زده میشم چون اونارو کلید موفقیت و رشد خودم می دونم.
  • @ahmadnaderi01
arrow