طراحی وب سایت کتابخانه

طراحی وب سایت کتابخانه

توابع تعریف شده توسط کاربر

چهارشنبه, ۲۰ خرداد ۱۳۹۴، ۰۱:۲۲ ب.ظ

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

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

<?php
function foo($arg_1, $arg_2, /* ..., */ $arg_n)
{
    echo "Example function.\n";
    return $retval;
}
?>

     هر نوع کد معتبر پی اچ پی را می توان در داخل تابع استفاده کرد، حتی سایر توابع و تعریف های کلاس. نام های توابع از قوانین مشابه نامگذاری برچسب ها در پی اچ پی تبعیت می کنند. یک نام معتبر تابع با یک حرف و یک زیرخط آغاز می شود، که پس از آن می تواند هر تعداد عدد و حرف یا علامت زیرخط استفاده کرد. این قوانین را در قالب یک عبارت رایج (Regular expression) می توان به این شکل بیان کرد:

[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

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

     زمانی که یک تابع به شیوه شرطی تعریف می شود، مانند دو مثال زیر، تعریف آن باید قبل از فراخوانی تابع انجام شده باشد.

مثال دوم: توابع شرطی

<?php

$makefoo = true;

/* We can't call foo() from here 
   since it doesn't exist yet,
   but we can call bar() */

bar();

if ($makefoo) {
  function foo()
  {
    echo "I don't exist until program execution reaches me.\n";
  }
}

/* Now we can safely call foo()
   since $makefoo evaluated to true */

if ($makefoo) foo();

function bar() 
{
  echo "I exist immediately upon program start.\n";
}

?>

مثال سوم: توابع در داخل توابع

<?php
function foo() 
{
  function bar() 
  {
    echo "I don't exist until foo() is called.\n";
  }
}

/* We can't call bar() yet
   since it doesn't exist. */

foo();

/* Now we can call bar(),
   foo()'s processing has
   made it accessible. */

bar();

?>

     تمامی توابع و کلاس ها در پی اچ پی داره حوزه سراسری هستند (global scope) – آنها را می توان در خارج از یک تابع فراخوانی کرد حتی اگر در داخل تابع تعریف شده باشند و بالعکس.

     پی اچ پی از سربار (overload) توابع پشتیبانی نمی کند، همچنین امکان تعریف دوباره یا از تعریف خارج کردن توابعی که قبلا معرفی شده اند وجود ندارد.

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

     در پی اچ پی می توان توابع برگشتی را نیز فراخوانی کرد. با این وجود از استفاده از فراخوانی توابع یا متدهایی که بیش از 100 الی 200 مرحله بازگشتی دارند خودداری نمایید به خاطر اینکه ممکن است این مساله باعث شود پشته آسیب ببیند و اجرای اسکریپت فعلی متوقف شود.

مثال چهارم: توابع بازگشتی

<?php
function recursion($a)
{
    if ($a < 20) {
        echo "$a\n";
        recursion($a + 1);
    }
}
?> 
موافقین ۱ مخالفین ۰ ۹۴/۰۳/۲۰
مهرداد یوسفی فرد

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی