1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

آموزش php برگرفته از کتاب آموزش PHP در 24 ساعت نوشته Matt Zandstra

شروع موضوع توسط minaaa ‏11/11/11 در انجمن PHP

  1. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,795
    تشکر شده:
    6,456
    امتیاز دستاورد:
    113
    [h=2][/h]
    بخش اول :

    مطالب زیر برگرفته از کتاب آموزش PHP در 24 ساعت نوشته Matt Zandstra می باشد

    در این درس خواهیم خواند :
    - نحوه ساخت ، بارگذاری و اجرای یک فایل PHP
    - چگونه از PHP و HTML در یک صفحه استفاده کنیم
    - چگونه کدها را با استفاده از کامنتهای برنامه نویسی قابل فهم تر کنیم

    خوب برای شروع یک TextEditor رو باز کنید. php هم مانند html مبتنی بر متن ساده است بنابراین از هر ادیتوری میشود برای ساخت فایل php استفاده کرد. مثلا Notepad خود را باز کنید.
    خطوط زیر را وارد کنید و فایل را به هر اسمی با پسوند .php ذخیره کنید. مثلا first.php


    كد:
    کد:

    1: <? 2: print "Hello Web!"; 3: ?>
    در صورتیکه php روی کامپیوتر خود نصب کرده اید ، فایل رو در وب سرور خود کپی کنید و آن را از طریق browser صدا کنید. و یا اینکه فایل رو در یک سایت با دسترسی PHP بارگذاری نمایید و آدرس آن را در browser تایپ کنید.
    پس از اجرای فایل جمله Hello Web! رو بر روی صفحه خواهید دید.
    در صورتیکه کدها خود را یعنی هما چیزی که در ادیتور تایپ کردید رو روی صفحه دیدید. این بدان معنی است که وب سرور شما فایل php رو اجرا نکرده (یا php بر روی آن نصب نیست و یا پسوند فایل رو به درستی انتخاب نکرده اید.)

    خوب حالا که صفحه اول php خود را upload کرده اید کمی در آن دقت کنید.
    در شروع و در اولین خط کد

    كد:
    کد:

    <?
    رو داريم. هميشه شروع يك كد php باید با همین تگ ها باشد. در غیر اینصورت سیستم با کدها مثل html رفتار میکند و بدون هیچگونه عملیاتی همان متن کد را نمایش خواهد داد.
    و در انتهای کد PHP نیز حتما باید

    كد:
    کد:

    ?>
    را وارد کنید که به server می فهماند که کد php اینجا تمام شده است و از این به بعد با کدهای html روبرو است.
    در انتهای هر خط از کدها باید از

    كد:
    کد:

    ;
    استفاده شود. در غیر اینصورت سرور کدها را در یک خط و پشت سر هم تشخیص می دهد. پس شما می توانستید کد بالا را در یک خط و به صورت

    كد:
    کد:

    <? Print "Hello Word!" ; ?>
    نیز بنویسید.

    دستور Print

    این دستور در واقع نمایش دهنده است و هر چیزی که به آن بدهید را بر روی صفحه نمایش می دهد.
    شما می توانید مقدار یک متغیر را نیز با استفاده از Print نمایش دهید.

    ترکیب PHP و HTML در یک صفحه

    کدهای زیر را در notepad وارد نمایید و ذخیره و upload کنید

    كد:
    کد:

    1: <html> 2: <head> 3: <title>Listing 3.2 A PHP script including HTML</title> 4: </head> 5: <body> 6: <b> 7: <? 8: print "hello world"; 9: ?> 10: </b> 11: </body> 12: </html>
    خوب همانطور که می بینید کدهای HTML به راحتی می توانند در کنار کدهای PHP کار کنند. در واقع سرور قبل از رسیدن به کد

    كد:
    کد:

    <?
    همه کدها رو html فرض کرده و کدهای در داخل

    كد:
    کد:

    <?
    و

    كد:
    کد:

    ?>
    را به عنوان کد php می شناسد و بر روی آنها عملیات انجام می دهد.

    گذاشتن Comment در میان کدها

    comment در واقع جملاتی است که نویسنده برنامه در میان کدها می نویسد تا توضیحی باشد بر کد. به این صورت که اگه دفعه بعد خود نویسنده و یا کس دیگری کدها رو دید ، متوجه بشود که هر دستور برای چه چیزی نوشته شده است. (توصیه می کنم همیشه از comment استفاده کنید)
    نحوه قراردادن commentهم به این صورت است که در اول خط از تگ

    كد:
    کد:

    //
    و یا
    كد:
    کد:

    #
    استفاده کنید.
    مثلا

    كد:
    کد:

    // This is a comment
    یا

    كد:
    کد:

    # in yek comment ast
     
    2 نفر از این پست تشکر کرده اند.
  2. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,795
    تشکر شده:
    6,456
    امتیاز دستاورد:
    113
    پاسخ : آموزش php برگرفته از کتاب آموزش PHP در 24 ساعت نوشته Matt Zandstra

    بخش دوم :
    در این درس می خوانیم :

    - درباره متغیرها ( متغیر چیست و چگونه از آن استفاده کنیم)
    - چگونه یک متغیر را تعریف کنیم و به مقدار آن دسترسی پیدا کنیم
    - برخی از علمگرهای متداول
    - چگونگی تعریف و استفاده از مقادیر ثابت

    متغیر نگهدارنده ویژه ایست برای مقادیر. هر متغیر دارای یک نام است که با علامت $ در اول آن مشخص می شود. نام یک متغیر می تواند شامل حروف ، اعداد و _ باشد. نام یک متغیر نمی تواند شامل space و یا کارکاترهای غیر حرفی باشد.
    کدهای زیر چند متغیر را تعریف می کنید :

    كد:
    کد:

    $a; $a_longish_variable_name; $2453; $sleepyZZZZ
    توجه داشته باشید که ; در انتهای هر خط جزونام متغیر می باشد و در واقع نشان دهنده پایان جمله کد PHP است.
    برای مقدار دادن به متغیر کافیست که آن را مساوی با مقدارش قرار دهید. به طور معمول شما در یک دستور php متغیر را تعریف می کنید و به آن مقدار می دهید. مانند کدهای زیر :


    كد:
    کد:

    $num1 = 8; $num2 = 23;
    وقتی که شما به ییک متغیر مقدار دادید می توانید دقیقا مانند یک کاراکتر با آن رفتار کنید. به طور مثال :

    كد:
    کد:

    print $num1;
    دقیقا برابر با دستور


    كد:
    کد:

    print 8;
    می باشد.

    نوع داده داخل متغیر DATA TYPE

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

    Type - Example - Description
    Integer - 5 - A whole number
    Double - 3.234 - A floating-point number
    String - "hello" - A collection of characters
    Boolean - true - One of the special values true or false
    آرایه و OBJECT

    جدول فوق انواع داده ها را نشان می دهد.
    شما می توانید از دستور gettype() برای مشاهده نوع یک متغیر استفاده کنید. به عنوان مثال :


    كد:
    کد:

    1: <html> 2: <head> 3: <title>Listing 4.3 Testing the type of a variable</title> 4: </head> 5: <body> 6: <?php 7: $testing = 5; 8: print gettype( $testing ); // integer 9: print "<br>"; 10: $testing = "five"; 11: print gettype( $testing ); // string 12: print("<br>"); 13: $testing = 5.0; 14: print gettype( $testing ); // double 15: print("<br>"); 16: $testing = true; 17: print gettype( $testing ); // boolean 18: print "<br>"; 19: ?> 20: </body> 21: </html>
    کدهای بالا در خروجی جملات زیر را نشان خواهد داد :

    كد:
    کد:

    integer string double boolean
    INTEGER یک عدد صحیح می باشد. به کلام ساده یک عدد بدون ممیز می باشد. STRING یک سری کاراکتر می باشد. وقتی در PHP با STRING کار می کنید باید حتما اطراف آن از " و یا ' استفاده شود. DOUBLE یک عددی است که ممیز نیز دارد. BOOLEAN یا TRUE است و یا FALSE.

    تغییر با استفاده از دستور settype()
    در PHP با استفاده از دستور settype() شما می توانید نوع یک متغیر را تغییر دهید. برای این کار باید نام متغیر و نوع متغیر که می خواهید به آن تغییر یابد را در بین پرانتز و با فاصله یک کاما در بینشان مشخص نمایید.
    به عنوان مثال :


    كد:
    کد:

    1: <html> 2: <head> 3: <title>Listing 4.5 Changing the type of a variable with settype()</title> 4: </head> 5: <body> 6: <?php 7: $undecided = 3.14; 8: print gettype( $undecided ); // double 9: print " -- $undecided<br>"; // 3.14 10: settype( $undecided, string ); 11: print gettype( $undecided ); // string 12: print " -- $undecided<br>"; // 3.14 13: settype( $undecided, integer ); 14: print gettype( $undecided ); // integer 15: print " -- $undecided<br>"; // 3 16: settype( $undecided, double ); 17: print gettype( $undecided ); // double 18: print " -- $undecided<br>"; // 3.0 19: settype( $undecided, boolean ); 20: print gettype( $undecided ); // boolean 21: print " -- $undecided<br>"; // 1 22: ?> 23: </body> 24: </html>
    در هر دفعه تغییر متغیر ما با استفاده از دستور GETTYPE() نوع متغیر را چاپ می کنیم که از تغییر آن مطمئن شویم.
    همانطور که می بینید در خط 7 مقدار متغیر 3.14 است و به صورت DOUBLE و در خط 10 به STRING تبدیل می شود و در خط 13 به INTEGER تغییر می کند و به 3 تبدیل می شود. (یعنی رند می شود) و به همین صورت......

    تغییر نوع داده بدون اینکه اصل متغیر تغییر کند

    با قرار دادن نام نوع داده Data Type در داخل پرانتز و قبل از نام متغیر یک کپی از متغیر با نوع داده جدید بدون تغییر دادن متغیر اصلی ایجاد می کند.
    به عنوان مثال :

    كد:
    کد:

    1: <html> 2: <head> 3: <title>Listing 4.6 Casting a variable</title> 4: </head> 5: <body> 6: <?php 7: $undecided = 3.14; 8: $holder = ( double ) $undecided; 9: print gettype( $holder ) ; // double 10: print " -- $holder<br>"; // 3.14 11: $holder = ( string ) $undecided; 12: print gettype( $holder ); // string 13: print " -- $holder<br>"; // 3.14 14: $holder = ( integer ) $undecided; 15: print gettype( $holder ); // integer 16: print " -- $holder<br>"; // 3 17: $holder = ( double ) $undecided; 18: print gettype( $holder ); // double 19: print " -- $holder<br>"; // 3.14 20: $holder = ( boolean ) $undecided; 21: print gettype( $holder ); // boolean 22: print " -- $holder<br>"; // 1 23: ?> 18: print gettype( $holder ); // double 19: print " -- $holder<br>"; // 3.14 20: $holder = ( boolean ) $undecided; 21: print gettype( $holder ); // boolean 22: print " -- $holder<br>"; // 1 23: ?>
    در کد بالا هیچ وقت نوع متغیر اصلی را تغییر ندادیم بلکه مثلا در خط 14 در متغیر $holder مقدار Integer شده متغیر اصلی یعنی مقدار 3 را قرار دادیم در خط 16 آن را چاپ کردیم
     
    2 نفر از این پست تشکر کرده اند.
  3. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,795
    تشکر شده:
    6,456
    امتیاز دستاورد:
    113
    پاسخ : آموزش php برگرفته از کتاب آموزش PHP در 24 ساعت نوشته Matt Zandstra

    بخش سوم :

    عملگرها :

    در درس های قبلی یاد گرفتیم که مقدار به متغیر بدهیم و data type متغیر ها رو تغییر بدهیم. یک زبان برنامه نویسی تا وقتی که نتونیم به وسیله اون بر روی متغیرها عملیات ریاضی انجام بدیم در واقع به درد نمی خوره.
    عملگرها سمبول هایی هستند که به وسیله اون می تونیم با استفاده از چند مقدار ، مقدار جدیدی رو تولید کنیم.
    یک عملگر به عنوان مثال همون + است.
    4 + 5 = 9
    در اینجا ما از عملگر + استفاده کردیم تا با استفاده از دو مقدار 4 و 5 مقدار جدید 9 را تولید کنیم.

    عملگر مقدار ده یا همون ( = ) کارش اینه که مقدار سمت راست خودش رو توی متغیر سمت چپ می ریزه.


    کد:
    كد:
    کد:

    print ( $name = "matt" );
    دستور بالا کلمه matt رو چاپ می کند و همچنین متغیر name رو مساوی matt قرار می دهد.

    عملگرهای ریاضی :


    کد:
    كد:
    کد:

    عملگر - نام - مثال - جواب + اضافه 3+5 8 - تفریق 3-10 7 / تقسیم 2/10 5 * ضرب 10*2 20 % قدرمطلق 3%10 1
    عملگر پیوند دهنده یا همان ( . )
    این عملگر وظیفه پیوند دادن متغیر های متنی رو دارد.
    به عنوان مثال :


    کد:
    كد:
    کد:

    "hello"." world" returns "hello world"
    در php یک سری عملگرهای دیگه ای برای مقدار دهی دارد.

    += عملگری است که با استفاده از اون متغیر با خودش جمع می شود.
    مثلا


    کد:
    كد:
    کد:

    $x = 4; $x += 4; // $x now equals 8
    همچنین -= و /= نیز می توان استفاده نمود.


    کد:
    كد:
    کد:

    $x = 4; $x -= 4; // $x now equals 1
    عملگرهای مقایسه ای

    عملگرهای مقایسه ای بر روی متغیرها اعمال می شود و مقایسه می کند و در صورت درست بودن True و در صورت غلط بودن False بر می گرداند.
    مثلا


    کد:
    كد:
    کد:

    $x < 5
    اگر مقدار x مثلا 3 باشد این عملگر True رو برمی گرداند.
    مثلا == مقدار سمت راست و سمت چپ رو چک می کند. اگه مثلا ما x رو 4 قرار داده باشیم.



    کد:
    كد:
    کد:

    $x == 5
    مقدار False بر می گرداند.
    != چک می کند که مقدار سمت راست و چپ برابر نباشند و اگر x همان 4 باشد :

    کد:
    كد:
    کد:

    $x =! 5
    True را بر می گرداند.
    === چک می کند که مقدار چپ و راست برابر باشند و همچنین نوع دیتا آنها Data type آنها یکی باشد.
    علامت بزرگتر و کوچکتر و بزرگتر مساوی و کوچکتر مساوی نیز به همین صورت.

    عملگرهای منطقی
    اولین عملگر منطقی همان عملگر or (یا) می باشد. دیگر نشانه این عملگر || می باشد.
    مثلا

    کد:
    كد:
    کد:

    true || false
    مقدار True را بر می گرداند.
    && فقط وقتی True برمی گرداند که هر دو طرف True باشند.
    مثلا


    کد:
    كد:
    کد:

    ( $x > 2 ) && ( $x < 15 )
    هنگامی مقدار True برمی گرداند که x بزرگتر از 2 و کوچکتر از 15 باشد.


    در جدول بالا قسمت Bold شده تنها عملگری است که کمی جالب است.

    عملگر ++ و --

    عملگر ++ یک عدد به متغیر اضافه می کند و -- یک متغیر از آن کم می کند.
    مثلا


    کد:
    كد:
    کد:

    $x++;
    یکی به $x اضافه می کند.
    به عنوان مثال


    کد:
    كد:
    کد:

    $x = 3; $x++ < 4; // true
    مقدار فوق True است.
    در مثال بالا همونطور که می بینید ابتدا عمل مقایسه انجام شده و بعد جمع صورت گرفته.
    حال :


    کد:
    كد:
    کد:

    $x = 3; ++$x < 4; // false
    مقدار فوق False می باشد یعنی ابتدا جمع صورت گرفته و بعد مقایسه شده است.

    ترتیب اجرای عملگرها
    شاید همه شما این را بدانید ولی در php ترتیب اجرای عملگرها به صورت زیر می باشند :



    کد:
    كد:

    کد:

    ++ − − (cast) / *% + − < <= => > == === != && || = += − = /= *=%= .= and xor or
    یعنی مثلا در

    کد:
    كد:
    کد:

    4 + 5 * 2
    ابتدا 2 در 5 ضرب می شود و بعد با 4 جمع می شود.
    یعنی جواب مقدار فوق 14 می باشد.
    البته شما با گذاشتن پرانتز می توانید php را مجبور کنید که به صورت دلخواه شما عمل کند. مثلا



    کد:
    كد:
    کد:

    (4+5) * 2
    مقدار 18 را می دهد
     
    2 نفر از این پست تشکر کرده اند.
  4. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,795
    تشکر شده:
    6,456
    امتیاز دستاورد:
    113
    پاسخ : آموزش php برگرفته از کتاب آموزش PHP در 24 ساعت نوشته Matt Zandstra

    بخش چهارم

    حلقه ها و ....

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

    در این درس می خوانیم :

    چگونه یک کد را وقتی اجرا کنیم که یک عبارت True باشد. IF CLAUSE
    چگونه قسمت دیگری از کد اجرا شود وقتی که همان عبارت False شود. ELSE
    چگونه از دستور switch استفاده کنیم.
    چگونه یک قسمت از کد را چند مربطه اجرا کنیم . while
    چگونه از FOR برای اجرای حلقه استفاده کنیم.
    چگونه یک حلقه FOR را قطع کنیم.


    اغلب script ها نیاز به تغییر خروجی در شرایط مختلف دارند. با استفاده از IF شما می توانید خروجی کدهای خودتون را در php با توجه به یک سری شرایط تغییر دهید.

    IF
    IF عبارت داخل پرانتز جلوی خود را کنترل می کند و درصورتی که Trueباشد آن قسمت از کد را اجر می نماید

    كد:
    کد:

    if ( expression ) { // code to execute if the expression evaluates to true }
    فرمت کلی IF به صورت بالا است. expression عبارتی است که باید کنترل شود. و عبارات بین { و } کدی است که در صورت true بودن عبارت If باید اجرا شود.

    كد:
    کد:

    1: <html> 2: <head> 3: <title>Listing 5.1</title> 4: </head> 5: <body> 6: <?php 7: $mood = "happy"; 8: if ( $mood == "happy" ) 9: { 10: print "Hooray, I'm in a good mood"; 11: } 12: ?> 13: </body> 14: </html>
    در خط 8 کد بالا ما از == استفاده کردیم تا کنترل کنیم که mood مقدار happy را در خود دارد یا خبر.
    از { و } فقط وقتی استفاده می کنیم که کدهای ما بیشتر از یک خط باشند.
    کد بالا رو به صورت زیر نیز می توان نوشت :

    كد:
    کد:

    if ( $mood == "happy" ) print "Hooray, I'm in a good mood";
    در این حالت Hooray, I'm in a good mood چاپ می شود. اگر ما متغیر mood رو "sad" قرار دهیم دیگر چیزی چاپ نخواهد شد.

    استفاده از ELSE در IF

    فرمت کلی آن به صورت زیر است :

    كد:
    کد:

    if ( expression ) { // code to execute if the expression evaluates to true } else { // code to execute in all other cases }
    قسمت بعد از else فقط وقتی اجرا می شود که عبارت داخل if ، برابر False باشد.

    كد:
    کد:

    1: <html> 2: <head> 3: <title>Listing 5.2</title> 4: </head> 5: <body> 6: <?php 7: $mood = "sad"; 8: if ( $mood == "happy" ) 9: { 10: print "Hooray, I'm in a good mood"; 11: } 12: else 13: { 14: print "Not happy but $mood"; 15: } 16: ?> 17: </body> 18: </html>
    در مثال بالا متغیر mood مقدار "sad" دارد و در واقع با "happy" برابر نیست پس قسمت داخل IF اجرا نمی شود و فقط قسمتی که داخل else می باشد اجرا خواهد شد. خروجی دستور بالا

    به صورت

    كد:
    کد:

    Not happy but sad
    خواهد بود.

    استفاده از ElseIf

    ElseIf مجددا یک عبارت دیگر را اجرا می نماید و در صورت True بودن دستورات داخلش اجرا خواهد شد.

    فرمت کلی به صورت زیر است :

    كد:
    کد:

    if ( expression ) { // code to execute if the expression evaluates to true } elseif ( another expression ) { // code to execute if the previous expression failed // and this one evaluates to true else { // code to execute in all other cases }
    اگر عبارت IF درست نباشد تکه اول کد نادیده گرفته می شود و نوبت عبارت Esleif می رسد اگر این عبارت درست باشد قسمت دوم کدها اجرا می شود. دستور else در نهایت وقتی اجرا

    می شود که هیچ کدام از عبارات IF و Elseif درست نباشند.
    شما به هر تعداد که می خواهید می توانید esleif در کدتان بگذارید. و در نهایت Else دلخواه است و می تواند در کد وجود نداشته باشد

    كد:
    کد:

    1: <html> 2: <head> 3: <title>Listing 5.3</title> 4: </head> 5: <body> 6: <?php 7: $mood = "sad"; 8: if ( $mood == "happy" ) 9: { 10: print "Hooray, I'm in a good mood"; 11: } 12: elseif ( $mood == "sad" ) 13: { 14: print "Awww. Don't be down!"; 15: } 16: else 17: { 18: print "Neither happy nor sad but $mood"; 19: } 20: ?> 21: </body> 22: </html>
    در مثال بالا mood مقدار sad دارد. این مقدار با Happy برابر نیست پس قسمت اول کدها نادیده گرفته می شود. Elseif متغیر mood را با مقدار sad مقایسه می کند که True است و

    کدهای قسمت دوم اجرا می شوند.

    دستور Switch
    این دستور روش دیگری برای تغییر مسیر حرکت اجرا شدن کدهاست. دستور switch فقط یک عبارت رو چک می کند و می تواند این عبارت را با مقادیر متفاوتی مقایسه کند و فقط کدی را

    اجرا کند که مقدار مورد نظر در آن True شود.
    فرمت کلی به صورت زیر است :

    کد:
    کد:

    switch ( expression ) { case result1: // execute this if expression results in result1 break; case result2: // execute this if expression results in result2 break; default: // execute this if no break statement // has been encountered hitherto } ​

    عبارت داخل دستور switch (منظور همان expression داخل پرانتز جلوی آن است) معمولا یک متغیر است. در کد های داخل switch (منظور قسمت بین { و } می باشد) شما case های

    مختلفی را می بینید که مقدار متغیر switch با همه این case ها مقایسه می شود و وقتی که مقدار ها با هم برابر بود کد مربوطه اجرا می شود.
    گذاشتن قسمت default اختیاری است. در صورتی که متغیر با هیچ کدام از مقادیر caseها برابر نباشد ، دستورات داخل default اجرا خواهد شد.

    احتیاط : دقت کنید که کلمه break در انتهای هر case را حتما بگذارید. در غیر اینصورت کد بعد از اجرا کردن case مورد نظر به راه خود ادامه می دهد و به مقدار default می رسد و

    آن را نیز اجرا می کند و این در اکثر مواقع چیزی نیست که ما دنبالش باشیم. دستور break در واقع از کل کدهای case خارج شده و به انتهای دستور switch می رود.

    مثال :

    کد:
    کد:

    1: <html> 2: <head> 3: <title>Listing 5.4</title> 4: </head> 5: <body> 6: <?php 7: $mood = "sad"; 8: switch ( $mood ) 9: { 10: case "happy": 11: print "Hooray, I'm in a good mood"; 12: break; 13: case "sad": 14: print "Awww. Don't be down!"; 15: break; 16: default: 17: print "Neither happy nor sad but $mood"; 18: } 19: ?> 20: </body> 21: </html> ​

    در مثال بالا ، در ابتدا mood مقدار sad را دارد و وقتی که در خط 8 Php وارد switch می شود ابتدا mood را با happy مقایسه می کند (خط 10) و به دلیل اینکه True نمی شود به خط 13

    می رود در آنجا چون mood=sad است کد خط 11 و سپس خط 12 را اجرا می کند. در خط 12 با دیدن دستور break به خط 18 می رود.

    روش جالب عملگر شرطی علامت سوال (؟)
    من اسم این روش رو IF یک خطی گذاشتم ! در این روش شما بدون نیاز به نوشتن دستورات IF می توانید تابع شرطی ایجاد کنید که در آن عبارتی چک شود و در صورت درست بودن یک

    سری کد اجرا شود و در صورت اشتباه بودن کد دیگر.

    کد:
    کد:

    ( expression )?returned_if_expression_is_true:returned_if_expression_is _false; ​

    اگر عبارت داخل پرانتز ما True بود کد بعد از علامت سوال اجرا می شود و در غیر اینصورت کد بعد از : اجرا خواهد شد.


    کد:
    کد:

    1: <html> 2: <head> 3: <title>Listing 5.5</title> 4: </head> 5: <body> 6: <?php 7: $mood = "sad"; 8: $text = ( $mood=="happy" )?"Hooray, I'm in a good mood":"Not happy but $mood"; 9: print "$text"; 10: ?> 11: </body> 12: </html> ​

    در مثال بالا در خط 8 از این روش استفاده شده است. در اینجا متغیر moodبا مقدار happy مقایسه می شود اگر درست بود خواهد نوشتHooray, Im in good mood و در غیر اینصورت (که

    اینجا اینطور نیست) می نویسد Not Happy But $mood که چون اینجا $mood مقدار Sad دارد خروجی می شود Not Happy But Sad.
    نوشتن و خواندن کد اینطوری کمی سخت است ولی اگر شما فقط یک شرایط رو بخواهید چک کنید و علاقه به نوشتن کدهای فشرده دارید این روش بسیار خوبی است.

    حلقه ها

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

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

    while

    کد:

    کد: while ( expression ) { // do something } ​

    تا وقتی که عبارت while (منظور همان expression داخل پرانتز جلوی آن است) True باشد کد داخل while پشت سر هم اجرا می شود. معمولا شما در داخل حلقه کاری می کنید که

    عبارت مرتبا تغییر نماید و یک جا False شود در غیر اینصورت حلقه شما تا بینهایت اجرا می شود.
    مثال زیر حلقه ای ایجاد می کند و مضارب 2 را نمایش می دهد.


    کد:
    کد:

    Listing 5.6: A while Statement 1: <html> 2: <head> 3: <title>Listing 5.6</title> 4: </head> 5: <body> 6: <?php 7: $counter = 1; 8: while ( $counter <= 12 ) 9: { 10: print "$counter times 2 is ".($counter*2)."<br>"; 11: $counter++; 12: } 13: ?> 14: </body> 15: </html> ​

    در خط 7 ما مقدار counter را 1 گذاشتیم. در خط 8 حقله ای تشکیل دادم که تا وقتی اجرا می شود که counter از 12 کوچکتر و یا مساوی آن باشد. در خط 10 خروجی برنامه را می نویسیم

    و در خط 11 به counter دو عدد اضافه می کنیم. روش ++ را در درس قبلی خواندیم.
    پس خروجی برنامه می شود. 2 - 4 - 8 - 10 - 12
    اگر شما در خط 11 فراموش می کردید که counter را زیاد کنید این حلقه تا بینهایت اجرا می شد چون هیچگاه counter زیاد نمی شد و هیچوقت از 12 بیشتر نمی شد.

    حلقه do و while

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

    کد:
    کد:

    do { // code to be executed } while ( expression ); ​

    توجه : آخر عبارت while در خط آخر حتما باید ; گذاشته شود.
    این متد وقتی خیلی به درد می خورد که شما بخواهید کد شما حداقل یکبار اجرا شود حتی اگر شرایط عبارت while اتفاق نیافتاده باشد.

    کد:
    کد:

    1: <html> 2: <head> 3: <title>Listing 5.7</title> 4: </head> 5: <body> 6: <?php 7: $num = 1; 8: do 9: { 10: print "Execution number: $num<br>\n"; 11: $num++; 12: } 13: while ( $num > 200 && $num < 400 ); 14: ?> 15: </body> 16: </html> ​

    در مثال بالا حقله do....while کنترل می کند که num بزرگتر از 200 و کوچتر از 400 باشد. چون ما num رو در خط 7 مساوی یک قراردادیم پس عبارت while درست نیست و False می باشد

    ولی در هر حال خروجی کد حداقل یک خط است که نوشته می شود Execution numnber : 1 .

    حقله For

    شما هیچ چیزی از استفاده از For به دست نمی آورید که نتوانید با While آن را ایجاد کنید. ولی در هر حال در اغلب مواقع استفاده از For کدهای زیباتر و بهتری نسبت به while ایجاد می

    کند.
    فرمت کلی به صورت زیر است :

    کد:} کد:

    for ( variable assignment; test expression; variable increment ) { // code to be executed ​

    هر عبارت داخل for باید حتما با ; از هم جدا شوند. معمولا ، عبارت اول یک متغیر شمارنده ایجاد می کند ، و در عبارت دوم عبارت کنترلی برای loop است ، و قسمت سوم اضافه کردن و

    کم نمودن متغیر را ایجاد می کند.

    مثال :

    کد:
    کد:

    1: <html> 2: <head> 3: <title>Listing 5.8</title> 4: </head> 5: <body> 6: <?php 7: for ( $counter=1; $counter<=12; $counter++ ) 8: { 9: print "$counter times 2 is ".($counter*2)."<br>"; 10: } 11: ?> 12: </body> 13: </html> ​

    در خط 7 بالا می توانید ببینید ، در قسمت اول counter را مساوی 1 نمودیم و در عبارت وسط محدود کردیم که حلقه تا وقتی کار کند که counter از 12 کوچکتر و یا مساوی آن باشد. در

    قسمت سوم هم عبارتی است که هر بار که کد اجرا شود یک عدد به counter اضافه نماید.
    مثال بالا و مثال قبلی هر دو یک خروجی را می دهند فقط کد for کمی جمع و جور تر از while است. به علت اینکه شروع ، پایان و شرایط حلقه در همان خط اول در For مشخص است ، با

    یک نگاه به این نوع حلقه کل حقله دستمان می آید.

    خروج از حلقه با استفاده از دستور break
    در هر دو روش ایجاد حلقه دستوری برای پایان دادن حلقه وجود دارد. گاهی اوقات نیاز است که وقتی کد به شرایط خاصی رسید حلقه پایان یابد.
    مثلا :

    کد:
    کد:

    1: <html> 2: <head> 3: <title>Listing 5.9</title> 4: </head> 5: <body> 6: <?php 7: for ( $counter=1; $counter <= 10, $counter++ ) 8: { 9: $temp = 4000/$counter; 10: print "4000 divided by $counter is... $temp<br>"; 11: } 12: ?> 13: </body> 14: </html> ​

    در کد بالا ما عدد 4000 رو بر counter که از 1 تا 10 متغیر است تقسیم می کنیم و خروجی را چاپ می کنیم. تا ایجا کد بدون نقص به نظر می رسد. ولی اگه مثلا counter از ورودی کاربر

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

    صفر ایجاد خطا در php می کند.
    مثلا فرض کنید از -4 شروع کنیم تا 10 این وسط صفر هم جزو مقادیر counter خواهد شد.

    کد:
    کد:

    1: <html> 2: <head> 3: <title>Listing 5.10</title> 4: </head> 5: <body> 6: <?php 7: $counter = − 4; 8: for ( ; $counter <= 10; $counter++ ) 9: { 10: if ( $counter == 0 ) 11: break; 12: $temp = 4000/$counter; 13: print "4000 divided by $counter is... $temp<br>"; 14: } 15: ?> 16: </body> 17: </html> ​

    در کد بالا همونطور که می بینید در خط 10 و 11 تعریف کردیم که اگه counter صفر شد حلقه قطع شود. بنابراین کد بعد از رسیدن به صفر و به break می رسد حلقه را قطع می نماید و به

    خط 14 می رود.
    نکته جالب در کد بالا در خط 7 است که ما counter را خارج از حلقه تعریف نمودیم. بنابراین در خط 8 دیگه counter رو تعریف نکردیم و جاش رو خالی گذاشتیم.
    شما هر کدام از قسمتهای for رو می تونید خالی بگذارید ولی ; ها رو حتما باید بگذارید.

    استفاده از دستور continue

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

    از دستور continue استفاده می کنیم.


    کد:
    کد:

    1: <html> 2: <head> 3: <title>Listing 5.11</title> 4: </head> 5: <body> 6: <?php 7: $counter = − 4; 8: for ( ; $counter <= 10; $counter++ ) 9: { 10: if ( $counter == 0 ) 11: continue; 12: $temp = 4000/$counter; 13: print "4000 divided by $counter is... $temp<br>"; 14: } 15: ?> 16: </body> 17: </html> ​

    در کد بالا در خط 10 و 11 وقتی مقدار counter صفر شود ، حلقه قطع می شود و دوباره کد بر می گردد به خط 8 ولی فقط مقدار صفر رو اجرا نخواهد کرد.

    حلقه های تو در تو

    در php این قابلیت رو دارید که در داخل یک حقله یک یا چند حلقه دیگه رو نیز بیارید. ولی باید توجه داشته باشید که هر حلقه ای که در یک حلقه دیگر استفاده می کنید باید در همان حلقه

    تمام شود.
    مثلا :

    کد:
    کد:

    1: <html> 2: <head> 3: <title>Listing 5.12</title> 4: </head> 5: <body> 6: <?php 7: print "<table border="1">\n"; 8: for ( $y=1; $y<=12; $y++ ) 9: { 10: print "<tr>\n"; 11: for ( $x=1; $x<=12; $x++ ) 12: { 13: print "\t<td>"; 14: print ($x*$y); 15: print "</td>\n"; 16: } 17: print "</tr>\n"; 18: } 19: print "</table>"; 20: ?> 21: </body>
     
    2 نفر از این پست تشکر کرده اند.
  5. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,795
    تشکر شده:
    6,456
    امتیاز دستاورد:
    113
    پاسخ : آموزش php برگرفته از کتاب آموزش PHP در 24 ساعت نوشته Matt Zandstra

    قسمت پنجم :

    توابع (Functions)

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

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

    تابع چیست ؟

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

    اگر شما نیاز به درست کردن یک کیک داشته باشید مسلما خودتان آن را درست می کنید. ولی اگه 1000 کیک بخواهید درست کنید مطمئنا ماشینی طراحی می کنید که برای شما کیک درست کند. در موقع نوشتن تابع هم همیشه باید این مورد مدنظرتان باشد که طوری تابع را بنویسید که بتوان از آن بارها استفاده کرد.
    تابع در خود کدهایی را جای می دهد که شما هر وقت به آن نیاز دارید آن تابع را صدا می کنید مقادیر اولیه را به آن می دهید و تابع جواب را برای شما برمی گرداند.
    فراخوانی تابع
    دو مدل تابع وجود دارد. اولی توابعی هستند که درون خود php هستند و دیگری توابعی است که شما می نویسید.
    یکی از ابتدایی ترین توابعی که در خود php هستند تابع print است.

    كد:
    کد:

    print("Hello Web");

    كد:



    در جلو تمامی توابع حتما باید () پرانتزها باشند ، البته print یک استثنا است که بدون پرانتز هم کار می کند


    كد:
    کد:

    print(("Hello Web");
    كد:
    کد:

    and print "Hello Web";
    هر دو دستور بالا یک خروجی را می دهند ولی این مورد فقط در دستور print عملی است.
    در مثال بالا ما تابع print را صدا کردیم و مقدار "hello word" رو برای اون فرستادیم. حالا تابع وارد عمل می شود و این جمله را چاپ می کند. تابع شامل دو بخش است. اولی نام تابع Print در اینجا و دیگری مقادیری که برای تابع می فرستیم argument همان که در داخل پرانتز جلوی تابع آمده است. برخی توابع نیاز به چند Argument دارند که آنها را با کاما ، جدا می کنیم. مثلا :


    كد:
    کد:

    some_function( $an_argument, $another_argument );
    كد:



    بسیاری از توابع اطلاعاتی برای شما بر می گرداند در راستای عملی که انجام می دهند. مثلا در صورت درست بودن یا نبودن True یا Falseبر می گردانند.
    ABS() مثلا ، یک عدد را می گیرد و قدر مطلق آن را بر می گرداند.


    كد:
    کد:

    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 بدهیم و همانجا چاپ کنیم.


    كد:
    کد:

    print( abs( − 321 ) );
    كد:



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

    تعریف یک تابع
    شما می توانید تابع را با استفاده از دستور Function تعریف نمایید.


    كد:
    کد:

    function some_function( $argument1, $argument2 ) كد: { // function code here }
    نام تابع درست بعد از دستور Function می آید و بلافاصله بعد از آن پرانتزها قرار می گیرند. اگر تابع شما Argument احتیاج دارد ، شما باید متغیرهای مورد نیاز را (که به وسیله کاما از هم جدا شده اند) را داخل پرانتز بنویسید. اگر تابع شما به Argument احتیاجی ندارد داخل پرانتز چیزی ننویسید.



    كد: کد:

    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: } 11: bighello(); 12: ?> 13: </body> 14: </html>
    در خط 7 کد بالا ما تابع bighello را تعریف کردیم. مشخص است عملیاتی که این تابع انجام می دهد این است که کلمه Hello! را بین کدهای H1 چاپ خواهد نمود. ما تابع bighello را بدون Argument تعریف کردیم ، به همین دلیل داخل پرانتز چیزی ننوشتیم.




    كد: کد:

    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: } 11: printBR("This is a line"); 12: printBR("This is a new line"); 13: printBR("This is yet another line"); 14: ?> 15: </body> 16: </html>
    در مثال بالا ما تابع printBR را با Argument تعریف می کنیم. حالا در خطوط 11 و12 و 13 سه مقدار متفاوت را به تابع می فرستیم و مثلا سه خط چاپ شده در خروجی خواهیم داشت. $txt همانطور که می بینید در خط 7 تعریف شده است. موقعی که در خطوط 11 و 12 و13 ما تابع را صدا می کنیم $txt هر دفعه مقداری که برایش فرستاده شده است را به خود می گیرد و در خط 9 آن را چاپ می کند.


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


    كد: کد:

    function printBR( $txt = "nothing") كد:



    در این حالت $txt به صورت default مقدار "nothing" را دارد. یعنی اگر ما موقع صدا کردن تابع مقداری برای Argument نفرستیم تابع خودش مقدار Default را به $txt می دهد ولی اگر ما مقدار بفرستیم $txt برابر با مقدار فرستاده شده می باشد.
    مثلا :
    PHP:
    PrintBR();
    PrintBr("Hello");


    كد:
     کد:

    در خط اول کد بالا چاپ خواهد شد Nothing و در خط بعد چاپ می شود Hello . مقدار Default در برخی توابع بسیار کارا هستند.
    كد:
    [COLOR=#000000]



    [/COLOR]  کد:

    [COLOR=#000000][b] بازگرداندن مقادیر از توابع تعریف شده توسط کاربر   [/COLOR]
    [COLOR=#000000]

    [/COLOR]
    شما می توانید از داخل تابع با استفاده از دستور  Return مقداری را برگردانید. دستور return عملیات تابع را متوقف می نماید و مقدار  گفته شده را بر می گرداند.

    كد:  کد:

    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 شما  می توانید هر چیزی را برگردانید مثلا : 





    كد:  کد:

    function addNums( $firstnum, $secondnum )    كد:     {   return ( $firstnum + $secondnum );  }
    تابع بالا نیز دقیقا همان کاری را می کند که تابع قبلی می نمود.  


    حتی می توانید به این صورت نیز از return استفاده کنید.

    كد:  کد:

    return 4;     كد:
    [COLOR=#000000]

    [/COLOR]
    می توانید نتیجه یک  عملیات را برگردانید :


    كد:
     کد:

    return ( $a/$b );
    كد:
    [COLOR=#000000]

    [/COLOR]
    یا حتی مقداری از یک تابع دیگر را برگردانید  :



    كد:
     کد:

    return ( another_function( $an_argument ) );
    كد:
    [COLOR=#000000]

    [/COLOR]
    [B]صدا کردن یک Function به صورت داینامیک  [/B]

    این امکان وجود داره که شما اسم تابع یک String یا یک متغیر بگذارید. و  برای صدا کردنش از اون استفاده کنید. مثلا :


    كد:  کد:

    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 دیگری.

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



    كد:  کد:

    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 قابل دسترسی  هستند.



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

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



    كد:  کد:

    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 استفاده کنیم.


    به طور مثال می  توانید برای این منظور کد بالا را به صورت زیر بازنویسی کنیدر : 

    كد:  کد:

    1: <html> 2: <head> 3: <title>Listing 6.8</title> 4: </head> 5: <body> 6: <?php 7$life=428: function meaningOfLife() 9: { 10: global $life11: 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 چاپ خواهد شد.

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

    [/RIGHT]
     
    2 نفر از این پست تشکر کرده اند.
  6. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,795
    تشکر شده:
    6,456
    امتیاز دستاورد:
    113
    پاسخ : آموزش php برگرفته از کتاب آموزش PHP در 24 ساعت نوشته Matt Zandstra

    قسمت ششم

    پي چ پي فقط به دادن خروجي متن محدود نيست شما ميتونيد عکس هاي متعددي با فرمت هاي متنوع با پي اچ پي خروجي داشته باشيد مثل PNG , GIF , JPG . WBMP , XPM و البته چندين فرمت ديگر که بايد پي اچ پي رو با اون ساطگاري بدين
    پي اچ پي ميتونه عکس رو مستقيم به سوي مرو گر هدايت کنه
    البته پي اچ پي به صورت پيش فرض اي ساخت عکس پشتيباني نميکنه که بايد آن را نصب کنيد ( GD ) البته اين کتابخانه ( library ) روي بيشتر سرور ها به صورت پيش فرض نصب هست ...

    در جيدي پشتيباني از PNG در نسخه 1.6 به بعد به وجود آمد و پشتيباني از GIF در نسخه -2.0.28 به وجود آمد

    يک مثال :

    كد:
    براي استفاده از مثال بالا در صفحهات خود از اين دستور استاده کنيد :

    كد:
    کد:

    <img src="button.php?text=text">
    حالا اين مثال چيکار ميکنه ؟
    مثال بالا ( button.php ) اول فايل images/button1.png رو باز ميکنه و بعد متغير TEXT رو روش مينويشه ( به صورت يک لايه جدا )
    مثلا اگ شما دکمه هاي يکجور زيادي با متن متفاوت داريد ميتوانيد با استفاده از اين اسکيپت در وضا صرفه جويي کنيد و ديگر همه دکمه ها را در سايت آپلود نکنيد و به عبارتي دکمه به صورت ديناميکي ( dynamically ) ساخته ميشود








    در پايين ليست و نحوه استفاده تمامي توابع gd نوشته شده :

    gd_info
    دادن اطلاعات در باره نسخه و ديگر چيزهاي GD نصب شده
    :
    اين تابع خروجي از نسخه چي دي و فرمت هاي پشتيباني شده توسط جي دي و ... را به شما ميدهد :

    كد:
    کد:

    <?php كد: print_r(gd_info()); ?>
    مثال بالا خروجي زير را بدنبال داره ( براي همه يکسان نيست )


    كد:
    کد:

    Array كد: ( [GD Version] => bundled (2.0.28 compatible) [FreeType Support] => 1 [FreeType Linkage] => with freetype [T1Lib Support] => [GIF Read Support] => 1 [GIF Create Support] => 1 [JPG Support] => 1 [PNG Support] => 1 [WBMP Support] => 1 [XBM Support] => 1 [JIS-mapped Japanese Font Support] => )
    ------------------------------

    getimagesize
    گرفتم اندازه عکس ( ابعاد)
    با استفاده از اين تابع ميتوان اندازه عکس رو به دست آورد مثلا 48*52
    اين تابع از GIF, JPG, PNG, SWF, SWC, PSD, TIFF, BMP, IFF, JP2, JPX, JB2, JPC, XBM, or WBMP پشتيباني ميکند
    مثلا :

    كد:
    کد:

    <?php كد: list($width, $height, $type, $attr) = getimagesize("img/flag.jpg"); echo "<img src=\"img/flag.jpg\" $attr alt=\"getimagesize() example\" />"; ?>
    در نسخه 4.0.5 به بعد از URL هم پشتيبانش شد :

    كد:
    کد:

    <?php كد: $size = getimagesize("http://www.example.com/gifs/logo.gif"); ?>
    ------------------------------
    image_type_to_extension
    گرفتن پسون عکس براي image type ()
    روش استفاده :

    كد: کد:

    image_type_to_extension ( int imagetype [, bool include_dot] )
    كد:




    -----------------------------
    image_type_to_mime_type
    گرفتن mime type يک عکس
    ( mime type در شناسوندن نوع عکس ( مثلا PNG ) به مرور گر کاربرد دارد البته در حاهاي ديگر هم کاربرد دارد )
    مثال :

    كد: کد:

    <?php كد: header("Content-type: " . image_type_to_mime_type(IMAGETYPE_PNG)); ?>
    اين تابع ميتواند حاوي يکي از خروجي هاي زير باشد :


    خروجي نوع عکس
    IMAGETYPE_GIF image/gif
    IMAGETYPE_JPEG image/jpeg
    IMAGETYPE_PNG image/png
    IMAGETYPE_SWF application/x-shockwave-flash
    IMAGETYPE_PSD image/psd
    IMAGETYPE_BMP image/bmp
    IMAGETYPE_TIFF_II(intel byte order) image/tiff
    IMAGETYPE_TIFF_MM (motorola byte order) image/tiff
    IMAGETYPE_JPC application/octet-stream
    IMAGETYPE_JP2 image/jp2
    IMAGETYPE_JPX application/octet-stream
    IMAGETYPE_JB2 application/octet-stream
    IMAGETYPE_SWC application/x-shockwave-flash
    IMAGETYPE_IFF image/iff
    IMAGETYPE_WBMP image/vnd.wap.wbmp
    IMAGETYPE_XBM image/xbm

    توجه : اين تابع نيازي به کتابخانه جي دي ندارد

    --------------------------------------
    image2wbmp
    دادن خروجي به يک فايل يا مرور گر
    مثال :

    كد: کد:

    <?php كد: $file = 'php.png'; $image = imagecreatefrompng($file); header('Content-type: ' . image_type_to_mime_type(IMAGETYPE_WBMP)); image2wbmp($image); // output the stream directly ?>
     
    2 نفر از این پست تشکر کرده اند.
  7. عضو جدید

    تاریخ عضویت:
    ‏28/1/13
    ارسال ها:
    4
    تشکر شده:
    1
    امتیاز دستاورد:
    1
    مطلب کپی هست دوست عزیز :|