توابع در PHP

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
فهرست مطالب:

  1. تعیین مقدار پیش فرض (default) برای ورودی های یک تابع، در PHP
  2. استفاده از return ، هنگام تعریف تابع در PHP
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تعیین مقدار پیش فرض (default) برای ورودی های یک تابع، در PHP

تعیین مقدار پیش فرض (default) برای ورودی های یک تابع، در PHP

هنگامی که در PHP ، یک تابع تعریف می کنیم که یک یا چند ورودی دریافت می کند، می توانیم برای ورودی های تابع، مقدار پیش فرض (default) تعریف کنیم. مقدار پیش فرض برای ورودی تابع، به این معنی است که اگر در هنگام ارجاع به تابع، هیچ مقداری برای آن ورودی تعیین نشده بود، آنگاه مقدار آن ورودی، برابر مقدار پیش فرض در نظر گرفته شود. برای درک بهتر این موضوع، به مثال زیر توجه کنید :

مثال :

ابتدا یک تابع که تنها یک ورودی دریافت می کند را به صورت معمولی می نویسیم (بدون تعریف مقدار پیش فرض برای ورودی) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]<?php[/B] 
[B]function[/B] my_function[COLOR=#009900]([/COLOR][COLOR=#000088]$input_variable[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
    [COLOR=#B1B100]echo[/COLOR] [COLOR=#000088]$input_variable[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR]

my_function[COLOR=#009900]([/COLOR][COLOR=#CC66CC]2[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[B]?>[/B][/FONT]
[/FONT][/COLOR]
نتیجه :

Untitled.jpg
این بار در هنگام ارجاع به تابع، مقدار برای ورودی تعیین نمی کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]<?php[/B] 
[B]function[/B] my_function[COLOR=#009900]([/COLOR][COLOR=#000088]$input_variable[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
    [COLOR=#B1B100]echo[/COLOR] [COLOR=#000088]$input_variable[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR]

my_function[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[B]?>[/B][/FONT]
[/FONT][/COLOR]
نتیجه :

Untitled.jpg
مشاهده می کنید که به دلیل عدم تعریف یک مقدار برای ورودی، پیام خطا نمایش داده شده است. اکنون، تابع را به گونه ای تعریف می کنیم که یک مقدار پیش فرض، برای ورودی input_variable در نظر بگیرد (هنگام تعریف تابع، در جلوی نام متغیر ورودی، یک علامت تساوی و سپس مقدار پیش فرض مورد نظرمان را می نویسیم) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]<?php[/B] 
[B]function[/B] my_function[COLOR=#009900]([/COLOR][COLOR=#000088]$input_variable[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]33[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
    [COLOR=#B1B100]echo[/COLOR] [COLOR=#000088]$input_variable[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR]

my_function[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[B]?>[/B][/FONT]
[/FONT][/COLOR]
نتیجه :
Untitled.jpg
مشاهده می کنید که به دلیل عدم تعیین ورودی برای تابع، مقدار پیش فرض استفاده شده است.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
استفاده از return ، هنگام تعریف تابع در PHP

استفاده از return ، هنگام تعریف تابع در PHP

همان طور که می دانید، در تعریف برخی از تابع ها در PHP ، از return استفاده می کنیم. اسفاده از return ، برای این است که تعیین کنیم که تابع باید یک متغیر را به ما برگرداند، حال این متغیر می تواند یک مقدار باشد و یا اینکه به صورت یک آرایه باشد که چندین مقدار در آن ذخیره شده باشد. برای تشخیص اینکه در چه مواردی باید از return در تعریف تابع استفاده کنیم، در ادامه یک مثال را شرح خواهیم داد.

مثال :

ابتدا تابعی با نام double را بدون استفاده از return ، تعریف می کنیم و سپس آن را اجرا می کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]<?php[/B]
[B]function[/B] double[COLOR=#009900]([/COLOR][COLOR=#000088]$A[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
     [COLOR=#000088]$B[/COLOR][COLOR=#339933]=[/COLOR][COLOR=#CC66CC]2[/COLOR][COLOR=#339933]*[/COLOR][COLOR=#000088]$A[/COLOR][COLOR=#339933];[/COLOR]
     [COLOR=#B1B100]echo[/COLOR] [COLOR=#000088]$B[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR]

double[COLOR=#009900]([/COLOR][COLOR=#CC66CC]3[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]         
[B]?>[/B][/FONT]
[/FONT][/COLOR]
نتیجه :

Untitled.jpg
در کدهای قبل، نتیجه تابع که در متغیر B ذخیره می شود، به طور موقتی است و به آن در خارج از تابع دسترسی نداریم. برای اثبات این موضوع، کدهای زیر را اجرا می کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]<?php[/B]
[B]function[/B] double[COLOR=#009900]([/COLOR][COLOR=#000088]$A[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
     [COLOR=#000088]$B[/COLOR][COLOR=#339933]=[/COLOR][COLOR=#CC66CC]2[/COLOR][COLOR=#339933]*[/COLOR][COLOR=#000088]$A[/COLOR][COLOR=#339933];[/COLOR]
     [COLOR=#B1B100]echo[/COLOR] [COLOR=#000088]$B[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR]

double[COLOR=#009900]([/COLOR][COLOR=#CC66CC]3[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#000088]$B[/COLOR][COLOR=#339933];[/COLOR]        
[B]?>[/B][/FONT]
[/FONT][/COLOR]
نتیجه :

Untitled.jpg
مشاهده می کنید که یک پیام خطا، مبنی بر عدم تعریف متغیر B نمایش داده شده است.

یا اینکه ممکن است که برخی از برنامه نویسان، به اشتباه، کدهای زیر را بنویسند :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]<?php[/B]
[B]function[/B] double[COLOR=#009900]([/COLOR][COLOR=#000088]$A[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
     [COLOR=#000088]$B[/COLOR][COLOR=#339933]=[/COLOR][COLOR=#CC66CC]2[/COLOR][COLOR=#339933]*[/COLOR][COLOR=#000088]$A[/COLOR][COLOR=#339933];[/COLOR]
     [COLOR=#B1B100]echo[/COLOR] [COLOR=#000088]$B[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR]

[COLOR=#000088]$C[/COLOR][COLOR=#339933]=[/COLOR]double[COLOR=#009900]([/COLOR][COLOR=#CC66CC]3[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] 
[COLOR=#000088]$D[/COLOR][COLOR=#339933]=[/COLOR][COLOR=#CC66CC]2[/COLOR][COLOR=#339933]*[/COLOR][COLOR=#000088]$C[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#0000FF]"<br />"[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#000088]$D[/COLOR][COLOR=#339933];[/COLOR]        
[B]?>[/B][/FONT]
[/FONT][/COLOR]
نتیجه :

Untitled.jpg
احتمالا کسی که کدهای بالا را می نویسد، انتظار دارد که مقدار متغیر D برابر 12 باشد، اما برابر 0 شده است، دلیل آن هم این است که وقتی عبارت زیر را می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#000088]$C[/COLOR][COLOR=#339933]=[/COLOR]double[COLOR=#009900]([/COLOR][COLOR=#CC66CC]3[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
چون تابع double هیچ مقداری را برنمی گرداند، بنابراین هیچ مقداری در متغیر C ذخیره نمی شود.

پس با توجه به مواردی که گفتیم، برای اینکه تابع یک مقدار را برگرداند، باید از return در هنگام تعریف آن، استفاده کنیم. کدهای بالا را این بار با استفاده از return بازنویسی می کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]<?php[/B]
[B]function[/B] double[COLOR=#009900]([/COLOR][COLOR=#000088]$A[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
     [COLOR=#000088]$B[/COLOR][COLOR=#339933]=[/COLOR][COLOR=#CC66CC]2[/COLOR][COLOR=#339933]*[/COLOR][COLOR=#000088]$A[/COLOR][COLOR=#339933];[/COLOR]
     [COLOR=#B1B100]echo[/COLOR] [COLOR=#000088]$B[/COLOR][COLOR=#339933];[/COLOR]
     [COLOR=#B1B100]return[/COLOR] [COLOR=#000088]$B[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR]

[COLOR=#000088]$C[/COLOR][COLOR=#339933]=[/COLOR]double[COLOR=#009900]([/COLOR][COLOR=#CC66CC]3[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] 
[COLOR=#000088]$D[/COLOR][COLOR=#339933]=[/COLOR][COLOR=#CC66CC]2[/COLOR][COLOR=#339933]*[/COLOR][COLOR=#000088]$C[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#0000FF]"<br />"[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#000088]$D[/COLOR][COLOR=#339933];[/COLOR]        
[B]?>[/B][/FONT]
[/FONT][/COLOR]
نتیجه :


بنابراین این بار چون تابع، یک مقدار را برمی گرداند، بنابراین مقدار 6 در متغیر C ذخیره شده است.

Untitled.jpg
 

saamaan217

عضو جدید
دوستان کسی مفهوم ارسال با ارجاع رو میتونه توضیح بده؟ آیا تو c++ هم همچین چیزی داریم؟ با php تفاوت داره؟
 

Similar threads

بالا