اطلاعیه

Collapse
No announcement yet.

آموزش php بخش 5

Collapse
X
 
  • Filter
  • زمان
  • Show
Clear All
new posts

  • آموزش php بخش 5

    توابع (Functions)

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

    در این درس می خوانیم :
    چگونه یک تابع را معرفی کنیم و از آن استفاده کنیم.
    چگونه مقدایر به تابع ارسال کنیم و از آنها مقادیر را بازخوانی کنیم.
    چگونه توابع با صورت داینامیک استفاده کنیم.
    چگونه به متغیرهای Global در توابع دسترسی پیدا کنیم.
    چگونه به یک تابع حافظه دهیم.

    تابع چیست ؟

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

    اگر شما نیاز به درست کردن یک کیک داشته باشید مسلما خودتان آن را درست می کنید. ولی اگه 1000 کیک بخواهید درست کنید مطمئنا ماشینی طراحی می کنید که برای شما کیک درست کند. در موقع نوشتن تابع هم همیشه باید این مورد مدنظرتان باشد که طوری تابع را بنویسید که بتوان از آن بارها استفاده کرد.
    تابع در خود کدهایی را جای می دهد که شما هر وقت به آن نیاز دارید آن تابع را صدا می کنید مقادیر اولیه را به آن می دهید و تابع جواب را برای شما برمی گرداند.
    فراخوانی تابع
    دو مدل تابع وجود دارد. اولی توابعی هستند که درون خود php هستند و دیگری توابعی است که شما می نویسید.
    یکی از ابتدایی ترین توابعی که در خود php هستند تابع print است.
    PHP Code:
    کد PHP:
    print("Hello Web"); 

    در جلو تمامی توابع حتما باید () پرانتزها باشند ، البته print یک استثنا است که بدون پرانتز هم کار می کند
    PHP Code:
    کد PHP:
    print(("Hello Web"); 
    and 
    print 
    "Hello Web"

    هر دو دستور بالا یک خروجی را می دهند ولی این مورد فقط در دستور print عملی است.
    در مثال بالا ما تابع print را صدا کردیم و مقدار "hello word" رو برای اون فرستادیم. حالا تابع وارد عمل می شود و این جمله را چاپ می کند. تابع شامل دو بخش است. اولی نام تابع Print در اینجا و دیگری مقادیری که برای تابع می فرستیم argument همان که در داخل پرانتز جلوی تابع آمده است. برخی توابع نیاز به چند Argument دارند که آنها را با کاما ، جدا می کنیم. مثلا :
    PHP Code:
    کد PHP:
    some_function$an_argument$another_argument ); 

    بسیاری از توابع اطلاعاتی برای شما بر می گرداند در راستای عملی که انجام می دهند. مثلا در صورت درست بودن یا نبودن True یا Falseبر می گردانند.
    ABS() مثلا ، یک عدد را می گیرد و قدر مطلق آن را بر می گرداند.
    PHP Code:
    کد PHP:
    1: <html> 
    2: <head> 
    3: <title>Listing 6.1</title> 
    4: </head> 
    5: <body> 
    6: <?php 
    7
    $num âˆ’ 321
    8$newnum abs$num ); 
    9: print $newnum
    10// prints "321" 
    11?> 
    12: </body> 
    13: </html>

    در این مثال ما عدد -321 را به $num دادیم. این مقدار را به تابع abs فرستادیم در آنجا محاسبات لازم انجام شد و جواب برگردانده شد که ما آنرا در داخل $newnum ریختیم و آن را چاپ کردیم. البته ما می توانستیم کد را کمی جمع و جور تر بنویسیم و مستقیما عدد را به abs بدهیم و همانجا چاپ کنیم.
    PHP Code:
    کد PHP:
    print( abs− 321 ) ); 

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

    تعریف یک تابع
    شما می توانید تابع را با استفاده از دستور Function تعریف نمایید.
    PHP Code:
    کد PHP:
    function some_function$argument1$argument2 

    // function code here 


    نام تابع درست بعد از دستور Function می آید و بلافاصله بعد از آن پرانتزها قرار می گیرند. اگر تابع شما Argument احتیاج دارد ، شما باید متغیرهای مورد نیاز را (که به وسیله کاما از هم جدا شده اند) را داخل پرانتز بنویسید. اگر تابع شما به Argument احتیاجی ندارد داخل پرانتز چیزی ننویسید.

    PHP Code:
    کد PHP:
    1: <html> 
    2: <head> 
    3: <title>Listing 6.2</title> 
    4: </head> 
    5: <body> 
    6: <?php 
    7
    : function bighello() 
    8: { 
    9: print "<h1>HELLO!</h1>"
    10: } 
    11bighello(); 
    12?> 
    13: </body> 
    14: </html>

    در خط 7 کد بالا ما تابع bighello را تعریف کردیم. مشخص است عملیاتی که این تابع انجام می دهد این است که کلمه Hello! را بین کدهای H1 چاپ خواهد نمود. ما تابع bighello را بدون Argument تعریف کردیم ، به همین دلیل داخل پرانتز چیزی ننوشتیم.
    PHP Code:
    کد PHP:
    1: <html> 
    2: <head> 
    3: <title>Listing 6.3</title> 
    4: </head> 
    5: <body> 
    6: <?php 
    7
    : function printBR$txt 
    8: { 
    9: print ("$txt<br>\n"); 
    10: } 
    11printBR("This is a line"); 
    12printBR("This is a new line"); 
    13printBR("This is yet another line"); 
    14?> 
    15: </body> 
    16: </html>

    در مثال بالا ما تابع printBR را با Argument تعریف می کنیم. حالا در خطوط 11 و12 و 13 سه مقدار متفاوت را به تابع می فرستیم و مثلا سه خط چاپ شده در خروجی خواهیم داشت. $txt همانطور که می بینید در خط 7 تعریف شده است. موقعی که در خطوط 11 و 12 و13 ما تابع را صدا می کنیم $txt هر دفعه مقداری که برایش فرستاده شده است را به خود می گیرد و در خط 9 آن را چاپ می کند.
    هر مقدار که بخواهیم می توانیم این تابع را اجرا کنیم و خروجی بگیریم.
    توجه داشته باشید که اگر تابعی Argument نیاز داشته باشد ، موقع صدا کردن تابع باید حتما مقدار برای آن بفرستیم.
    نکته در صورتیکه تابع را به این صورت تعریف کنید :
    PHP Code:
    کد PHP:
                                         function printBR$txt "nothing"
    </div> در این حالت $txt به صورت default مقدار "nothing" را دارد. یعنی اگر ما موقع صدا کردن تابع مقداری برای Argument نفرستیم تابع خودش مقدار Default را به $txt می دهد ولی اگر ما مقدار بفرستیم $txt برابر با مقدار فرستاده شده می باشد.
    مثلا :
    [php]
    PrintBR();
    PrintBr("Hello");
    PHP Code:
    کد PHP:
     Ø¯Ø± Ø®Ø· Ø§ÙˆÙ„ Ú©Ø¯ Ø¨Ø§Ù„ا Ú†Ø§Ù¾ Ø®ÙˆØ§Ù‡Ø¯ Ø´Ø¯ Nothing Ùˆ Ø¯Ø± Ø®Ø· Ø¨Ø¹Ø¯ Ú†Ø§Ù¾ Ù…ÛŒ Ø´ÙˆØ¯ Hello Ù…قدار Default Ø¯Ø± Ø¨Ø±Ø®ÛŒ ØªÙˆØ§Ø¨Ø¹ Ø¨Ø³ÛŒØ§Ø± Ú©Ø§Ø±Ø§ Ù‡Ø³ØªÙ†Ø¯

    [
    bبازگرداندن Ù…قادیر Ø§Ø² ØªÙˆØ§Ø¨Ø¹ ØªØ¹Ø±ÛŒÙ Ø´Ø¯Ù‡ ØªÙˆØ³Ø· Ú©Ø§Ø±Ø¨Ø± 
    </div> شما می توانید از داخل تابع با استفاده از دستور Return مقداری را برگردانید. دستور return عملیات تابع را متوقف می نماید و مقدار گفته شده را بر می گرداند.
    PHP Code:
    کد PHP:
    1: <html> 
    2: <head> 
    3: <title>Listing 6.4</title> 
    4: </head> 
    5: <body> 
    6: <?php 
    7
    : function addNums$firstnum$secondnum
    8: { 
    9$result $firstnum $secondnum 
    10: return $result
    11: } 
    12: print addNums(3,5); 
    13// will print "8" 
    14?> 
    15: </body> 
    16: </html>

    کد بالا عدد 8 را در خروجی چاپ می کند. عددهای 3 و 5 در $firstnum and $secondnum ذخیره شدهند و بعد با هم جمع شدند. و جواب آنها در $result ذخیره شد و سپس در خط 10 آن مقدار برگردانده شده است. با دستور Return شما می توانید هر چیزی را برگردانید مثلا :
    PHP Code:
    کد PHP:
    function addNums$firstnum$secondnum 

    return ( 
    $firstnum $secondnum ); 


    تابع بالا نیز دقیقا همان کاری را می کند که تابع قبلی می نمود.
    حتی می توانید به این صورت نیز از return استفاده کنید.
    PHP Code:
    کد PHP:
    return 4

    می توانید نتیجه یک عملیات را برگردانید :
    PHP Code:
    کد PHP:
    return ( $a/$b ); 

    یا حتی مقداری از یک تابع دیگر را برگردانید :

    PHP Code:
    کد PHP:
    return ( another_function$an_argument ) ); 



    صدا کردن یک Function به صورت داینامیک

    این امکان وجود داره که شما اسم تابع یک String یا یک متغیر بگذارید. و برای صدا کردنش از اون استفاده کنید. مثلا :
    PHP Code:
    کد PHP:
    1: <html> 
    2: <head> 
    3: <title>Listing 6.5</title> 
    4: </head> 
    5: <body> 
    6: <?php 
    7
    : function sayHello() 
    8: { 
    9: print "hello<br>"
    10: } 
    11$function_holder "sayHello"
    12$function_holder(); 
    13?> 
    14: </body> 
    15: </html>

    در مثال بالا در خط 7 تابع با اسم Sayhello تعریف شده و در خط 11 function_holder یک متغیری تعریف شده با مقدار sayHello حالا می توان از function_holder با اضافه پرانتزها برای صدا کردن تابع استفاده کرد.

    شاید این سوال پیش بیاد که چرا ما باید همچین چیزی رو لازم داشته باشیم. در مثال فوق عملا ما فقط کار خودمون رو زیادتر کردیم. ولی در واقع در برخی مواقع لازم داریم که جریان کد رو با توجه به مولفه های داخل url یا شرایط برنامه عوض کنیم.
    یعنی مثلا در شرایطی یک function اجرا شود و در شرایط دیگه function دیگری.

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

    PHP Code:
    کد PHP:
    1: <html> 
    2: <head> 
    3: <title>Listing 6.6</title> 
    4: </head> 
    5: <body> 
    6: <?php 
    7
    : function test() 
    8: { 
    9$testvariable "this is a test variable"
    10: } 
    11: print "test variable: $testvariable<br>"
    12?> 
    13: </body> 
    14: </html>


    در مثال بالا خروجی چیزی رو چاپ نخواهد نمود. چون $testvariable که در خط 11 برای چاپ خوانده می شود قبلا تعریف نشده است و $testvariable خط 9 فقط در داخل function قابل دسترسی هستند.

    استفاده از متغیر به صورت Global (یعنی داخل و خارج تابع ها)

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

    PHP Code:
    کد PHP:
    1: <html> 
    2: <head> 
    3: <title>Listing 6.7</title> 
    4: </head> 
    5: <body> 
    6: <?php 
    7
    $life 42
    8: function meaningOfLife() 
    9: { 
    10: print "The meaning of life is $life<br>"
    11: } 
    12meaningOfLife(); 
    13?> 
    14: </body> 
    15: </html>

    خروجی خالی چاپ می شود و مقدار $life را چاپ نخواهد کرد. در برخی موارد ما نیاز به استفاده از متغیرهای بیرون تابع داخل یک تابع داریم. برای این کار کافیه که از دستور Global استفاده کنیم.
    به طور مثال می توانید برای این منظور کد بالا را به صورت زیر بازنویسی کنیدر :
    کد PHP:
    1: <html>
    2: <head>
    3: <title>Listing 6.8</title>
    4: </head>
    5: <body>
    6: <?php
    7
    $life=42;
    8: function meaningOfLife()
    9: {
    10: global $life;
    11: print "The meaning of life is $life<br>";
    12: }
    13meaningOfLife();
    14?>
    15: </body>
    16: </html>
    در خط 10 از دستور global $life; استفاده کردیم. در این حالت مقدار $life که بیرون تابع و در خط 7 تعریف شده در داخل تابع قابل دسترس می شود و خروجی این کد The meaning of life is 42 چاپ خواهد شد.

    شما باید برای هر متغیری که می خواهید ازش در تابع استفاده کنید از این دستور استفاده کنید. و همچنین در هر تابعی که می خواهید از متغیری خارج از آن تابع استفاده کند باید از این دستور استفاده شود.
    مهم : دقت کنید که اگه $life داخل تابع تغییر دهید مقدار $life در کل برنامه عوض می شود.



    دانلود نسخه pdf لینک زیر هست
    http://www.divshare.com/download/1024377-26e

  • #2
    کد:
     
    6: <?php 
    7: function addNums( $firstnum, $secondnum[COLOR="Red"];[/COLOR] 
    8: { 
    9: $result = $firstnum + $secondnum [COLOR="Red"]) [/COLOR]
    10: return $result; 
    11: } 
    12: print addNums(3,5); 
    13: // will print "8" 
    14: ?>
    البته جسارته یه ارور کوچیک بود :
    کد:
    function addnum ( $firstnum , $secondnum [COLOR="Red"])[/COLOR]
    {
    $result = $firstnum + $secondnum[COLOR="Red"];[/COLOR]
    return $result;
    }
    print addnum(3,5);
    ?>

    Comment

    Working...
    X