سبد (0)

تبلیغات

تعریف توابع در PHP

تعریف توابع در PHP

Wiki

قدرت واقعی PHP در توابع آن است، در PHP بیش از 1000 تابع از قبل نوشته شده وجود دارد.

در این فصل به شما نشان خواهیم داد که در PHP چگونه می توانید توابع خودتان را تعریف کنید.

یک تابع به وسیله صدا زدن آن اجرا خواهد شد، شما می توانید از هر جای صفحه آنرا صدا بزنید.

نحوه تعریف توابع:

function functionName()
{
code to be executed;
}

توجه: برای نامگذاری توابع موارد زیر را در نظر داشته باشید:

  • اسامی توابع به نحوی انتخاب شوند که نام انتخاب شده معرفی کننده عملی باشد که تابع انجام می دهد
  • نام تابع می تواند با حروف و یا علامت "_" شروع شود(با عدد نمی تواند شروع شود).

مثال: یک تابع ساده که با صدا زدن آن نام من چاپ می شود:

<html>
<body>

<?php
function writeName()
{
echo "pahlavan sadegh";
}

echo "My name is ";
writeName();
?>

</body>
</html>

خروجی کد بالا:

My name is pahlavan sadegh


ارسال پارامتر به توابع

Wiki

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

مثال1: در مثال زیر با ارسال نام شخص به تابع، بعد از صدا زدن تابع، نام های مختلف با فامیلی یکسان چاپ می شود.

<html>
<body>

<?php
function writeName($fname)
{
echo $fname . " Ahmadi.<br />";
}

echo "My name is ";
writeName("Ali");
echo "My sister's name is ";
writeName("Sara");
echo "My brother's name is ";
writeName("Amir");
?>

</body>
</html>

خروجی کد بالا:

My name is Ali Ahmadi.
My sister's name is Sara Ahmadi.
My brother's name is Amir Ahmadi.

مثال2: تابع زیر دو پارامتر دارد.

<html>
<body>

<?php
function addNumbers($a , $b)
{
$sum = $a + $b;
echo $sum;
}

addNumbers(100,200);
؟>

</body>
</html>

 خروجی کد بالا:

300

نکته: به صورت پیش فرض پارامترهایی که به توابع ارسال می شوند، طوری هستند که در صورتی که در تابع تغییر کنند مقدار اصلی آنها تغییری نخواهد کرد و به همان صورت باقی خواهند ماند، اما اگر در تعریف تابع قبل از اسم متغیر از علامت "&" استفاده کنیم، این ویژگی تغییر می کند یعنی با تغییر یک متغیر در درون تابع، اصل متغیر هم تغییر خواهد نمود، به مثال زیر توجه کنید.

مثال:

<html>
<body>

<?php
function changeit(&$string)
{
echo "String is: " . $string . '<br />';
$string="Learning PHP";
echo "String Changed to: " . $string . '<br />';
}

$str="PLUS";
changeit($str);
echo $str;

?>

</body>
</html>

خروجی کد بالا:

String is: PLUS
String Changed to: Learning PHP
Learning PHP


 بازگرداندن یک مقدار توسط توابع

Wiki

شما می توانید از دستور return برای بازگرداندن یک مقدار استفاده کنید، یعنی کافی است نتیجه را جلوی دستور return قرار دهید.

مثال:

<html>
<body>

<?php
function add($x,$y)
{
$total=$x+$y;
return $total;
}

echo "1 + 16 = " . add(1,16);
?>

</body>
</html>

خروجی کد بالا:

1 + 16 = 17


توابع از پیش تعریف شده:

Wiki

در php بیش از 5300 تابع از پیش تعریف شده وجود دارد که البته برای اجرای آنها ممکن است در ورژن های مختلف برخی توابع وجود نداشته باشند و یا برای اجرای بعضی توابع احتیاج باشد تا extension خاصی نصب باشد.
توابع از پیش تعریف شده همانند توابعی که کاربر تعریف می کند اجرا می شوند.


برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.

دیدگاه‌ها  

+1 # hosien 1395-07-19 01:15
با سلام .ممنون از سایتتون. واقعا مفید هستند مطالب.
سوال: من ارسال ارگومان به روش ارجاع رو اصلا متوجه نشدم مثالشو در قسمت "ارسال پارامتر به توابع". میشه بیشتر توضیح بدید؟؟؟.ممنون
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # مهرداد صلاحی 1395-07-19 09:43
با سلام و تشکر.
ارسال آرگومان با روش ارجاع یا اصطلاحا By Reference کمی نیاز به زمان داره. در واقع برای فهم این سؤال شما باید با نحوه‌ی ذخیره اطلاعات در حافظه کمی آشنا باشید.

اگه بخوام خیلی روان توضیح بدم، شما در تابعی که آرگومان رو به این روش پاس می‌دید، با اجرای تابع، خود این آرگومان یا پارامتر دست‌خوش تغییرات داخل تابع میشه.
کد زیر رو در نظر بگیرید:
function byRef(&$arg){
$arg = $arg * $arg;
return $arg;
}

function byVal($arg){
$arg = $arg * $arg;
return $arg;
}

$var1 = 5;
echo $var1;
echo '';

byRef($var1);
echo $var1;

echo '';

$var2 = 15;
echo $var2;
echo '';
byVal($var2);
echo $var2;


این یه مثال ساده هست. ارسال پارامتر به روش مقدار و ارجاع رو تست کردیم. با توجه به چاپ مقدار فکر میکنم کمی مشخص بشه، نحوه‌ی کارش. اما توصیه‌ی بنده به شخصه این هست که یه مقدار به زبان PHP مسلط بشید و کدنویسی کنید تا منطق دست‌تون بیاد. این روش رو در کار یاد بگیرید بهتره.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # فرید 1395-06-13 13:31
من از wamp استفاده میکنم که این پیغام رو نسبت به کد زیر میده! مشکل کجاست؟
test_function
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # مهرداد صلاحی 1395-07-19 09:44
با سلام خدمت شما دوست عزیز.

امکانش هست سؤالتون رو کامل مطرح کنید. من از صورت سؤال چیزی متوجه نمیشم.

با تشکر
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # فریبا mizraee 1395-04-20 11:26
هیچ وقت فرق این دو تا کد رو نفهمیدم ممکن بهم بگید ریترن که کاری میکنه

فرق return با قبلی
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # مهرداد صلاحی 1395-04-22 20:47
سلام.
فرق return با چی؟؟؟
کدهاتون کامل نیومده.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # فرید 1395-01-15 09:40
در این مثال شما:








خارج از فانکشن متغیر (پارامتر) رو چاپ میکنید با مقدار تغییر کرده؟ خارج از فانکشن که متغییر مقدارش نال هست !
من پارامتر رو وسیله ای برای انداختن مقدار به درون فانکشن میبینم، فقط !
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # مهرداد صلاحی 1395-01-15 11:53
سلام دوست عزیز.
کدها نیومده، لطفا دوباره ارسال کنید.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
-1 # امیرکیان 1394-11-11 02:00
آیا امکان تعریف توابع بینام وجود دارد؟
مثل جیکوری و جاوااسکریپت
مثلا موقعی که رویدادی اتفاق افتاد یک تابع بینام PHP اجرا شود ؟!
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # مهرداد صلاحی 1394-11-12 07:08
با سلام.
امکان تعریف تابع بی‌نام وجود نداره. در هیچ زبان برنامه‌نویسی!
jquery و javascript هم اینطور نیست. اگر ممکن است یه سمپل بذارید ببینم.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # امیرکیان 1394-11-12 10:29
چطور میگید وجود ندارد
/*اکشن برگشت به بالا*/
jQuery("#go-up").click(function(){
jQuery("body,html").animate({scrollTop:"0px"},1000);
});
الان فانکشن به کار رفته یک تابع بی نام است که باید دستورات آن اجرا شوند
و فکر میکنم تابع بینام جایگزین دستور زیر باشد برای راحت کردن کار است
if(document).click{comments;}
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # مهرداد صلاحی 1394-11-12 20:55
بله دوست عزیز. حدس می‌زدم منظور شما این باشه...
ببینید اینجا فانکشن در ظاهر بدون نام هست، ولی در واقع اینجا یک تابع به رویداد کلیک کنترل موردنظر اعمال میشه. در واقع این تابع فقط برای این کنترل با این ID‌ هست.
در PHP چیزی شبیه زیر وجود داره:
$function = function(){
$array = range(1, 20);
$str implode("", $array);
return $str;
}


در اینجا ما یک متغیر تابعی تعریف کردیم. یعنی یک متغیر تعریف کردیم و به جای مقدار بهش تابع دادیم. در ظاهر شاید تابع ما بدون نام باشه، ولی در واقع این تابع با نام متغیر صدا زده میشه. یعنی هر جا شما متغیر function$ رو صدا بزنی، تابع موردنظر اجرا میشه.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # منسون 1394-11-03 14:10
سلام
دوست عزیز از آموزش های عالی شما کمال تشکر را دارم .
من چند تا کتاب دارم که مبحث تابع ان 40 صفحه است و آرایه در تابع و ... را تعریف کرده است
اونا رو بخونم یا همین چیز هایی که شما گفتید کافی است و اونا اضافی هستند .
با تشکر
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # مهرداد صلاحی 1394-11-03 23:41
با سلام و تشکر.
یه مطلبی خدمت شما دوست عزیز بگم و اون اینکه، یادگیری هیچ‌وقت انتها نداره. همیشه مطلب و نکته‌ای برای یادگیری هست. هر کدوم که فهمش برای شما آسون‌تر هست رو ابتدا بخونید و سپس برای درک مطلب و یا یادگیری نکات بیشتر آموزش دوم رو مطالعه کنید.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # امیرکیان 1394-09-25 19:56
یک سوال
توابع را باید در کدام قسمت از html page تعریف کرد؟!
ودر کجا میشود صدایشان کرد؟
آیا نیازی به تعریف الگوی تابع نیست؟
آز توابع میشود به صورت تو در تو استفاده کرد؟
قلمرو توابع تا کجاست ؟
ببخشید سوالام زیاده ;)
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # مهرداد صلاحی 1394-09-25 20:36
با سلام.
در هر صفحه‌ای که نیاز به تابع خاصی باشه، باید اون تابع تعریف بشه. اما خیلی مواقع پیش میاد که در صفحات مختلف یک تابع خاص استفاده میشه. در اینطور مواقع معمولا یک فایل حاوی توابع تعریف شده ایجاد می‌کنند، و در صفحات دیگه به نوعی اون فایل رو لود می‌کنند. با این کار توابع در فایلها قابل استفاده خواهد شد. با این کار فقط توابع از یک جا مدیریت می‌شن که این خیلی خوب هست.
هر جایی هم نیاز به استفاده از تابع باشه، می‌تونیم اون تابع رو با نامش صدا بزنیم.
منظورتون از الگوی تابع مشخص نیست!!!
منظورتون از تابع تو در تو مشخص نیست، ولی به طور کل با کمی کدنویسی میشه توابعی تو در تو تعریف کرد ولی در کل توصیه نمیشه.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # amin 1394-07-20 17:34
می شود لطف کنید توضیحات بیشتری در مورد پارامتر بدهید?
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+3 # مهرداد صلاحی 1394-07-20 18:45
با سلام.
پارامترها در واقع نوعی مقادیر ورودی به توابع هستن.

برخی توابع برای انجام کارشون نیاز به یک یا چند مقدار ورودی دارن. این مقادیر ورودی، در واقع همون پارامترها هستن.
مثلا تابع جمع برای کار نیاز به دو مقدار داره.
function Sum($num1, $num2){
return $num1 + $num2;
}


تابع بالا یک تابع جمع هست که برای کار نیاز به دو مقدار داره. این دو مقدار توسط «پارامترهای» تابع به تابع ارسال میشه. البته اینجا استفاده از کلمه‌ی پارامتر خیلی صحیح نیست، ولی برای فهم از همین کلمه استفاده می‌کنم.

num1 پارامتر اول و num2 پارامتر دوم تابع Sum هست.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # mohsen moardi 1393-12-13 19:31
md5 چي هست؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # احسان عباسی 1394-01-16 16:17
md5 یک الگوریتم است که یک مقدار هش 128 بیت(16 بایت) را ایجاد می کند. از آن به طور معمول برای امنیت داده ها استفاده می شود.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+5 # mohsen moardi 1393-11-16 10:13
سلام....اگه بخوايم با كليك دكمه ي خاصي مثلا submit فنكشن خاصي اجرا بشه ك با php تعريف شده بايد چكار كرد؟اگه با جاوا اسكريپت تابعي تعريف ميشد تو قسمت on click نام فاكشن رو قرار ميداديم اما وقتي با php تابعي تعريف ميشه چطور بايد فانكشن صدا زده بشه؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+3 # امیر پهلوان صادق 1393-11-16 10:22
سلام،
1- ابتدا تگ زیر را در form قرار بدهید ویژگی value آنرا با نام تابع مورد نظرتان تنظیم کنید:<input name="action" value="myFuncti on" type="hidden">
2- زمان ارسال مقادیر به سمت سرور مقدار action نیز ارسال خواهد شد. بنابراین سمت سرور با استفاده از دستور switch بر اساس مقادیر action تصمیم می گیریم که چه کاری باید انجام شود.
در پروژه هتل، دقیقاً از همین روش استفاده شده است، در صورت تمایل می توانید آنرا خریداری کرده و کدها را مشاهده کنید.
http://beyamooz.com/php/339-project-hotel/2594
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+3 # امیر خ 1393-07-18 14:17
سلام
در قسمت "ارسال پارامتر به توابع" در مثال بعد از نکته ،
چون $string.="Learn ing PHP"; با نقطه به هم وصل شدن ، کلمه Learning PHP به plus می چسبد و خروجی زیر چاپ می شود.

String is: PLUS
String Changed to: PLUSLearning PHP
PLUSLearning PHP
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # امیر پهلوان صادق 1393-07-19 10:07
با تشکر از شما، اصلاح شد.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن

آموزش صوتی PHP

بستن
مدرس:
سوال و جواب:

ابزاری که در پیش روی دارید یکی از ابزارهای بسیار کاربردی سایت بیاموز در زمینه آموزش است، این ابزار برای سهولت یادگیری شما کاربران محترم طراحی شده است.

فقط کافی است روی عنوان پاراگراف مورد نظرتان کلیک کنید تا پخش صدا آغاز شود ...!

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه پرداخت آنلاین - بانک اقتصاد نوین پرداخت آنلاین - بانک سامان
 
دوره های آموزشی راه اندازی کسب و کارهای اینترنتی
تبلیغات اینترنتی