قدرت واقعيphp ازداشتن توابع است .اين زبان داراي بيش از هزارتابع داخلي است ،كه ميتوان ار آنهابراي موضوعات مختلف استفاده نمود .بجز اينها، امكان ايجاد تابع براي كاربر وجود دارد.
phpبيش از هزار تابع داخلي دارد،كه ميتوان مستقيما از آنهادر اسكريپت ها براي موارد خاص استفاده نمود.
براي آگاهي ازتوابع فهرست كامل آنرا مطالعه فرمائيد.
علاوه بر استفاده توابع داخلي ،اين امكان وجود دارد كه كابر براي خود تابع ايجاد كند .تابع داراي مشخصات زير است.
-1تابع بلوك از دستورات است كه ميتوان بكرات از آن استفاده نمود.
-2هنگام بارگيري صفحه تابع بصورت خودكار اجرا نميشود.
-3تابع فقط با فراخوانيش اجرا ميگردد.
براي ايجاد تابع بايد با كلمهfunction شروع نمود .بدنبال با حداقل يك فاصله نام تابع يعني functionName() شروع ميگردد.بدنبال دستورات تابع بين{} نوشته ميشود .فرمت كلي تابع مطابق زير است.
function functionname() {
set code to be executed;
}
نكته ـ نام تابع بايد با يك حرف ويا زير خط شروع شود.
نكته ـ نامي براي تابع انتخاب كنيد، كه تقريبا گوياي كارش باشد.
مثال ـ در مثال زير تابعي با نام "writeMsg()"ايجاد ميكنيم.
شروع دستورات بايد علامت{ وپايان آن علامت} باشد.
<?php function writeMsg(){ echo "Hello world!"; } writeMsg(); // call the function ?>
تابع ميتواند داراي پارامتر دريافتي باشد .اين پارامتر هارا آرگومان تابع گويند .اين مثل متغير ميباشند .از طريق اين پارامترها ميتوان اطلاعات به تابع منتقل نمود .آرگومانهاي تابع قرار گرفته وبا كاما تفكيك ميشوند بين ().
مثال ـ تابع در مثال زير داراي يك پارامتريعني$fname ميباشد .
مثال ـ درمثال زير تابع داراي دو آرگومان است $fname , $year .
<?php function familyname($fname,$year) { echo "$fname Refsens. Born in $year <br>"; } familyname("Jani","1975"); familyname("Hege","1980"); familyname("Stale","1978"); familyname("Kai Jim","1983"); ?>
همانطوريكه قبلا بحث گرديدphp يك زبان آزاد در نوعdata است .بدين معني لزومي به تعريف نوع متغيرنيست، نوع آن براساس اطلاعات دريافتي مشخص ميشود .در يك برنامه ممكن است تغيركند. ولي درphp7 ميتوان نوع آنرا تعريف نمود،ودرآن رفتار سخت گيرانه نسبت به نوع اطلاعات دارد.
مثال ـ در مثال زير تابعي با ذكر نوع آرگومان تعريف شده است.
<?php function addnumbers(int $a, int $b){ return $a+$b; } echo addnumbers(5,"5 days"); // since strict is not enabled "5 days" is changed to to int(5), and it // will be return 10 ?>
اگر مثال را بهمين صورت درphp7 اجرا نمائيم، براي برنامه خطائي صادرنميشود ، وبا توجه به بي معني بودن اين عمل ، نتيجه تابع10 ميشود.
اجراي برنامه فوق درphp5 خطاي تعريف آرگومان را داده ومتوقف ميشود .اين خطا بخاطر دقت در عمل نيست، بلكه نوع تعريف آرگومان را نمي پذيرد .اگر تابع بصورت زير تعريف واجرا شود همان نتيجه بي معنيphp7 راميدهد.
function addnumbers( $a, $b) { return $a+$b; }
درphp7 براي تعريف نوع اطلاعات امكاني پيش بيني شده، كه ميتوان از اين نوع عمليات غير قابل قبول جلوگيري نموده ، و برنامه را با اعمال محدويت سخت گيرانه تر، بهبود بخشيد.
برا رفع اشكال ، بايدstrict _types=1 را ابتدا برنامه اعلام نمائيم .با اين محدويت اختيار كنترل عمليات محاسباتي ودادن پيغام مناسب را بهphp7 ميدهيم .
declare(strict_types =1);
//strict_requirementمثال ـ همان مثال قبلي با رعايت
declare(strict_types=1)
<?php declare(strict_types=1); //strict requiement function addnumbers(int $a, int $b){ return $a+$b } echo addnumbers(5,"5 days"); // since strict is not enabled "5 days" is changed to to int(5), and it // will be return 10 ?>
در صورت اجراي مثال، مشاهده ميكنيد كه پيغام مناسب را داده ونتيجه اشتباه را نمايش نميدهد.
مقادير پيش فرض آرگومانPHP-Defaut Argument Value -
در تعريف آرگون تابع ميتوان براي آن مقدار پيش فرض (Default Value) مشخص نمود.
در مثال زير در تابعsetheight() براي آرگومان$minheight مقدار پيش فرض 50منظور شده است .در صورتيكه درcall تابع آرگومان ذكر نشود مقدار پيش فرض در نظر گرفته ميشود .
مثال
<?php declare(strict_types=1); // strict requirement ?> <!DOCTYPE html> <html> <body> <?php function setHeight(int $minheight = 50) { echo "The height is : $minheight <br>"; } setHeight(350); setHeight(); // means setHeight(50); setHeight(135); setHeight(80); ?> </body> </html>