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

آموزش Php

شروع موضوع توسط ♥ yakamoz ♥ ‏30/11/10 در انجمن PHP

  1. کاربر ویژه

    تاریخ عضویت:
    ‏25/11/10
    ارسال ها:
    8,717
    تشکر شده:
    4,395
    امتیاز دستاورد:
    123
    حرفه:
    Telegram: vahid_yakamoz instagram: vahid_yakamoz
    ر این درس خواهیم خواند :
    - نحوه ساخت ، بارگذاری و اجرای یک فایل PHP
    - چگونه از PHP و HTML در یک صفحه استفاده کنیم
    - چگونه کدها را با استفاده از کامنتهای برنامه نویسی قابل فهم تر کنیم

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

    خوب حالا که صفحه اول php خود را upload کرده اید کمی در آن دقت کنید.
    در شروع و در اولین خط کد Code:
    <?
    رو داريم. هميشه شروع يك كد php باید با همین تگ ها باشد. در غیر اینصورت سیستم با کدها مثل html رفتار میکند و بدون هیچگونه عملیاتی همان متن کد را نمایش خواهد داد.
    و در انتهای کد PHP نیز حتما باید Code:
    ?>
    را وارد کنید که به server می فهماند که کد php اینجا تمام شده است و از این به بعد با کدهای html روبرو است.
    در انتهای هر خط از کدها باید از Code:
    ;
    استفاده شود. در غیر اینصورت سرور کدها را در یک خط و پشت سر هم تشخیص می دهد. پس شما می توانستید کد بالا را در یک خط و به صورت
    Code:
    <? Print "Hello Word!" ; ?>
    نیز بنویسید.
     
    یک شخص از این تشکر کرد.
  2. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    آموزش Php - قسمت دوم - متغیرها
    در این درس می خوانیم :



    - درباره متغیرها ( متغیر چیست و چگونه از آن استفاده کنیم)

    - چگونه یک متغیر را تعریف کنیم و به مقدار آن دسترسی پیدا کنیم

    - برخی از علمگرهای متداول

    - چگونگی تعریف و استفاده از مقادیر ثابت



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

    کدهای زیر چند متغیر را تعریف می کنید :

    Code:
    $a;
    $a_longish_variable_name;
    $2453;
    $sleepyZZZZ</pre>

    توجه داشته باشید که ; در انتهای هر خط جزونام متغیر می باشد و در واقع نشان دهنده پایان جمله کد PHP است.

    برای مقدار دادن به متغیر کافیست که آن را مساوی با مقدارش قرار دهید. به
    طور معمول شما در یک دستور php متغیر را تعریف می کنید و به آن مقدار می
    دهید. مانند کدهای زیر :

    Code:
    $num1 = 8;
    $num2 = 23;</pre>

    وقتی که شما به ییک متغیر مقدار دادید می توانید دقیقا مانند یک کاراکتر با آن رفتار کنید. به طور مثال :

    Code:
    print $num1;</pre>

    دقیقا برابر با دستور

    Code:
    print 8;</pre>

    می باشد.



    نوع داده داخل متغیر 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() برای مشاهده نوع یک متغیر استفاده کنید. به عنوان مثال :

    Code:
    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></pre>

    کدهای بالا در خروجی جملات زیر را نشان خواهد داد :

    Code:
    integer
    string
    double
    boolean</pre>

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



    تغییر با استفاده از دستور settype()

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

    به عنوان مثال :

    Code:
    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></pre>

    در هر دفعه تغییر متغیر ما با استفاده از دستور GETTYPE() نوع متغیر را چاپ می کنیم که از تغییر آن مطمئن شویم.

    همانطور که می بینید در خط 7 مقدار متغیر 3.14 است و به صورت DOUBLE و در
    خط 10 به STRING تبدیل می شود و در خط 13 به INTEGER تغییر می کند و به 3
    تبدیل می شود. (یعنی رند می شود) و به همین صورت......



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



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

    به عنوان مثال :

    Code:
    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: ?></pre>

    در کد بالا هیچ وقت نوع متغیر اصلی را تغییر ندادیم بلکه مثلا در خط
    14 در متغیر $holder مقدار Integer شده متغیر اصلی یعنی مقدار 3 را قرار
    دادیم در خط 16 آن را چاپ کردیم.
     
  3. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    آموزش php - قسمت سوم - عملگرها
    عملگرها :



    در درس های قبلی یاد گرفتیم که مقدار به متغیر بدهیم و data type متغیر ها
    رو تغییر بدهیم. یک زبان برنامه نویسی تا وقتی که نتونیم به وسیله اون بر
    روی متغیرها عملیات ریاضی انجام بدیم در واقع به درد نمی خوره.

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

    یک عملگر به عنوان مثال همون + است.

    4 + 5 = 9

    در اینجا ما از عملگر + استفاده کردیم تا با استفاده از دو مقدار 4 و 5 مقدار جدید 9 را تولید کنیم.



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

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    print ( $name = "matt" );



    </code>
    </code>
    دستور بالا کلمه matt رو چاپ می کند و همچنین متغیر name رو مساوی matt قرار می دهد.



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

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    عملگر - نام - مثال - جواب

    + اضافه 3+5 8

    - تفریق 3-10 7

    / تقسیم 2/10 5

    * ضرب 10*2 20

    % قدرمطلق 3%10 1



    </code>
    </code>
    عملگر پیوند دهنده یا همان ( . )

    این عملگر وظیفه پیوند دادن متغیر های متنی رو دارد.

    به عنوان مثال :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    "hello"." world"

    returns

    "hello world"



    </code>
    </code>
    در php یک سری عملگرهای دیگه ای برای مقدار دهی دارد.



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

    مثلا

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    $x = 4;

    $x += 4; // $x now equals 8



    </code>
    </code>
    همچنین -= و /= نیز می توان استفاده نمود.

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    $x = 4;

    $x -= 4; // $x now equals 1



    </code>
    </code>
    عملگرهای مقایسه ای



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

    مثلا

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    $x < 5



    </code>
    </code>
    اگر مقدار x مثلا 3 باشد این عملگر True رو برمی گرداند.

    مثلا == مقدار سمت راست و سمت چپ رو چک می کند. اگه مثلا ما x رو 4 قرار داده باشیم.

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    $x == 5



    </code>
    </code>
    مقدار False بر می گرداند.

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

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    $x =! 5



    </code>
    </code>
    True را بر می گرداند.

    === چک می کند که مقدار چپ و راست برابر باشند و همچنین نوع دیتا آنها Data type آنها یکی باشد.

    علامت بزرگتر و کوچکتر و بزرگتر مساوی و کوچکتر مساوی نیز به همین صورت.



    عملگرهای منطقی

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

    مثلا
    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    true || false



    </code>
    </code>
    مقدار True را بر می گرداند.

    && فقط وقتی True برمی گرداند که هر دو طرف True باشند.

    مثلا

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    ( $x > 2 ) && ( $x < 15 )



    </code>
    </code>
    هنگامی مقدار True برمی گرداند که x بزرگتر از 2 و کوچکتر از 15 باشد.

    [​IMG]nload="NcodeImageResizer.createOn(this);" border="0">



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



    عملگر ++ و --



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

    مثلا

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    $x++;



    </code>
    </code>
    یکی به $x اضافه می کند.

    به عنوان مثال

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    $x = 3;

    $x++ < 4; // true



    </code>
    </code>
    مقدار فوق True است.

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

    حال :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    $x = 3;

    ++
    $x < 4; // false



    </code>
    </code>
    مقدار فوق False می باشد یعنی ابتدا جمع صورت گرفته و بعد مقایسه شده است.



    ترتیب اجرای عملگرها

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

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    ++ − − (cast)

    / *%

    +


    < <= => >

    == === !=

    &&

    ||

    = +=
    = /= *=%= .=

    and

    xor

    or



    </code>
    </code>
    یعنی مثلا در
    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    4 + 5 * 2



    </code>
    </code>
    ابتدا 2 در 5 ضرب می شود و بعد با 4 جمع می شود.

    یعنی جواب مقدار فوق 14 می باشد.

    البته شما با گذاشتن پرانتز می توانید php را مجبور کنید که به صورت دلخواه شما عمل کند. مثلا

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    (4+5) * 2



    </code>
    </code>
    مقدار 18 را می دهد.
     
  4. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    آموزش Php - قسمت پنجم - توابع

    آموزش Php - قسمت پنجم - توابع





    درس ششم



    توابع (Functions)



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



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

    چگونه یک تابع را معرفی کنیم و از آن استفاده کنیم.

    چگونه مقدایر به تابع ارسال کنیم و از آنها مقادیر را بازخوانی کنیم.

    چگونه توابع با صورت داینامیک استفاده کنیم.

    چگونه به متغیرهای Global در توابع دسترسی پیدا کنیم.

    چگونه به یک تابع حافظه دهیم.



    تابع چیست ؟



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



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

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

    فراخوانی تابع

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

    یکی از ابتدایی ترین توابعی که در خود php هستند تابع print است.

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    print("Hello Web");



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

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    print(("Hello Web");

    and

    print
    "Hello Web";



    </code>
    </code>
    هر دو دستور بالا یک خروجی را می دهند ولی این مورد فقط در دستور print عملی است.

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

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    some_function( $an_argument, $another_argument );



    </code>
    </code>
    بسیاری از توابع اطلاعاتی برای شما بر می گرداند در راستای عملی که
    انجام می دهند. مثلا در صورت درست بودن یا نبودن True یا Falseبر می
    گردانند.

    ABS() مثلا ، یک عدد را می گیرد و قدر مطلق آن را بر می گرداند.

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    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>

    </code>
    </code>
    در این مثال ما عدد -321 را به $num دادیم. این مقدار را به تابع abs
    فرستادیم در آنجا محاسبات لازم انجام شد و جواب برگردانده شد که ما آنرا
    در داخل $newnum ریختیم و آن را چاپ کردیم. البته ما می توانستیم کد را کمی
    جمع و جور تر بنویسیم و مستقیما عدد را به abs بدهیم و همانجا چاپ کنیم.

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    print( abs( − 321 ) );



    </code>
    </code>
    این یک خط کد همان کاری را می کند که در مثال قبل انجام دادیم.

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



    تعریف یک تابع

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

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    function some_function( $argument1, $argument2 )

    {

    // function code here

    }



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



    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    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>

    </code>
    </code>
    در خط 7 کد بالا ما تابع bighello را تعریف کردیم. مشخص است عملیاتی
    که این تابع انجام می دهد این است که کلمه Hello! را بین کدهای H1 چاپ
    خواهد نمود. ما تابع bighello را بدون Argument تعریف کردیم ، به همین دلیل
    داخل پرانتز چیزی ننوشتیم.

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    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>

    </code>
    </code>
    در مثال بالا ما تابع printBR را با Argument تعریف می کنیم. حالا در
    خطوط 11 و12 و 13 سه مقدار متفاوت را به تابع می فرستیم و مثلا سه خط چاپ
    شده در خروجی خواهیم داشت. $txt همانطور که می بینید در خط 7 تعریف شده
    است. موقعی که در خطوط 11 و 12 و13 ما تابع را صدا می کنیم $txt هر دفعه
    مقداری که برایش فرستاده شده است را به خود می گیرد و در خط 9 آن را چاپ می
    کند.

    هر مقدار که بخواهیم می توانیم این تابع را اجرا کنیم و خروجی بگیریم.

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

    نکته در صورتیکه تابع را به این صورت تعریف کنید :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    function printBR( $txt = "nothing")



    </code>
    </code>
    در این حالت $txt به صورت default مقدار "nothing" را دارد. یعنی اگر
    ما موقع صدا کردن تابع مقداری برای Argument نفرستیم تابع خودش مقدار
    Default را به $txt می دهد ولی اگر ما مقدار بفرستیم $txt برابر با مقدار
    فرستاده شده می باشد.

    مثلا :

    PHP:

    PrintBR();

    PrintBr("Hello");

    [LEFT] PHP Code:
     [LEFT]<code  style="white-space: nowrap;">
    <code>[COLOR=#000000]
    [COLOR=#0000BB]در خط اول کد بالا چاپ خواهد شد Nothing و در خط بعد چاپ می شود Hello [/COLOR][COLOR=#007700]. [/COLOR][COLOR=#0000BB]مقدار [/COLOR][COLOR=#007700]Default [/COLOR][COLOR=#0000BB]در برخی توابع بسیار کارا هستند[/COLOR][COLOR=#007700].



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

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

    [LEFT] PHP Code:
     [LEFT]<code  style="white-space: nowrap;">
    <code>[COLOR=#000000]
    1: <html>

    2: <head>

    3: <title>Listing 6.4</title>

    4: </head>

    5: <body>

    6: [COLOR=#0000BB]<?php

    7
    [/COLOR][COLOR=#007700]: function [/COLOR][COLOR=#0000BB]addNums[/COLOR][COLOR=#007700]( [/COLOR][COLOR=#0000BB]$firstnum[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]$secondnum[/COLOR][COLOR=#007700];

    [/COLOR][COLOR=#0000BB]8[/COLOR][COLOR=#007700]: {

    [/COLOR][COLOR=#0000BB]9[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]$result [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]$firstnum [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000BB]$secondnum [/COLOR][COLOR=#007700])

    [/COLOR][COLOR=#0000BB]10[/COLOR][COLOR=#007700]: return [/COLOR][COLOR=#0000BB]$result[/COLOR][COLOR=#007700];

    [/COLOR][COLOR=#0000BB]11[/COLOR][COLOR=#007700]: }

    [/COLOR][COLOR=#0000BB]12[/COLOR][COLOR=#007700]: print [/COLOR][COLOR=#0000BB]addNums[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]3[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]5[/COLOR][COLOR=#007700]);

    [/COLOR][COLOR=#0000BB]13[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#FF8000]// will print "8"

    [/COLOR][COLOR=#0000BB]14[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]?>

    [/COLOR]15: </body>

    16: </html>[/COLOR]
    </code>
    </code>
    [/LEFT]
    [/LEFT]
    کد  بالا عدد 8 را در خروجی چاپ می کند. عددهای 3 و 5 در $firstnum 
    and $secondnum  ذخیره شدهند و بعد با هم جمع شدند. و جواب آنها در $result 
    ذخیره شد و سپس در  خط 10 آن مقدار برگردانده شده است. با دستور Return شما 
    می توانید هر چیزی را  برگردانید مثلا : 

    [LEFT] PHP Code:
     [LEFT]<code  style="white-space: nowrap;">
    <code>[COLOR=#000000]
    [COLOR=#0000BB][/COLOR][COLOR=#007700]function [/COLOR][COLOR=#0000BB]addNums[/COLOR][COLOR=#007700]( [/COLOR][COLOR=#0000BB]$firstnum[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]$secondnum [/COLOR][COLOR=#007700])

    {

    return ( [/COLOR][COLOR=#0000BB]$firstnum [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000BB]$secondnum [/COLOR][COLOR=#007700]);



    [/COLOR][COLOR=#0000BB][/COLOR]
    [/COLOR]
    </code>
    </code>
    [/LEFT]
    [/LEFT]
    تابع  بالا نیز دقیقا همان کاری را می کند که تابع قبلی می نمود. 

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

    [LEFT] PHP Code:
     [LEFT]<code  style="white-space: nowrap;">
    <code>[COLOR=#000000]
    [COLOR=#0000BB][/COLOR][COLOR=#007700]return [/COLOR][COLOR=#0000BB]4[/COLOR][COLOR=#007700]; 

    [/COLOR][COLOR=#0000BB][/COLOR]
    [/COLOR]
    </code>
    </code>
    [/LEFT]
    [/LEFT]
    می  توانید نتیجه یک عملیات را برگردانید :

    [LEFT] PHP Code:
     [LEFT]<code  style="white-space: nowrap;">
    <code>[COLOR=#000000]
    [COLOR=#0000BB][/COLOR][COLOR=#007700]return ( [/COLOR][COLOR=#0000BB]$a[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000BB]$b [/COLOR][COLOR=#007700]); 

    [/COLOR][COLOR=#0000BB][/COLOR]
    [/COLOR]
    </code>
    </code>
    [/LEFT]
    [/LEFT]
    یا  حتی مقداری از یک تابع دیگر را برگردانید :



    [LEFT] PHP Code:
     [LEFT]<code  style="white-space: nowrap;">
    <code>[COLOR=#000000]
    [COLOR=#0000BB][/COLOR][COLOR=#007700]return ( [/COLOR][COLOR=#0000BB]another_function[/COLOR][COLOR=#007700]( [/COLOR][COLOR=#0000BB]$an_argument [/COLOR][COLOR=#007700]) ); 

    [/COLOR][COLOR=#0000BB][/COLOR]
    [/COLOR]
    </code>
    </code>
    [/LEFT]
    [/LEFT]


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



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

    [LEFT] PHP Code:
     [LEFT]<code  style="white-space: nowrap;">
    <code>[COLOR=#000000]
    1: <html>

    2: <head>

    3: <title>Listing 6.5</title>

    4: </head>

    5: <body>

    6: [COLOR=#0000BB]<?php

    7
    [/COLOR][COLOR=#007700]: function [/COLOR][COLOR=#0000BB]sayHello[/COLOR][COLOR=#007700]()

    [/COLOR][COLOR=#0000BB]8[/COLOR][COLOR=#007700]: {

    [/COLOR][COLOR=#0000BB]9[/COLOR][COLOR=#007700]: print [/COLOR][COLOR=#DD0000]"hello<br>"[/COLOR][COLOR=#007700];

    [/COLOR][COLOR=#0000BB]10[/COLOR][COLOR=#007700]: }

    [/COLOR][COLOR=#0000BB]11[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]$function_holder [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#DD0000]"sayHello"[/COLOR][COLOR=#007700];

    [/COLOR][COLOR=#0000BB]12[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]$function_holder[/COLOR][COLOR=#007700]();

    [/COLOR][COLOR=#0000BB]13[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]?>

    [/COLOR]14: </body>

    15: </html>[/COLOR]
    </code>
    </code>
    [/LEFT]
    [/LEFT]
    در  مثال بالا در خط 7 تابع با اسم Sayhello تعریف شده و در خط 11 
    function_holder  یک متغیری تعریف شده با مقدار sayHello حالا می توان از 
    function_holder با  اضافه پرانتزها برای صدا کردن تابع استفاده کرد.



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

    یعنی مثلا  در شرایطی یک function اجرا شود و در شرایط دیگه function  دیگری.



    [B]متغیر ها در داخل تابع [/B]

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

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



    [LEFT] PHP Code:
     [LEFT]<code  style="white-space: nowrap;">
    <code>[COLOR=#000000]
    1: <html>

    2: <head>

    3: <title>Listing 6.6</title>

    4: </head>

    5: <body>

    6: [COLOR=#0000BB]<?php

    7
    [/COLOR][COLOR=#007700]: function [/COLOR][COLOR=#0000BB]test[/COLOR][COLOR=#007700]()

    [/COLOR][COLOR=#0000BB]8[/COLOR][COLOR=#007700]: {

    [/COLOR][COLOR=#0000BB]9[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]$testvariable [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#DD0000]"this is a test variable"[/COLOR][COLOR=#007700];

    [/COLOR][COLOR=#0000BB]10[/COLOR][COLOR=#007700]: }

    [/COLOR][COLOR=#0000BB]11[/COLOR][COLOR=#007700]: print [/COLOR][COLOR=#DD0000]"test variable: $testvariable<br>"[/COLOR][COLOR=#007700];

    [/COLOR][COLOR=#0000BB]12[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]?>

    [/COLOR]13: </body>

    14: </html>[/COLOR]
    </code>
    </code>
    [/LEFT]
    [/LEFT]
    در  مثال بالا خروجی چیزی رو چاپ نخواهد نمود. چون $testvariable که 
    در خط 11 برای  چاپ خوانده می شود قبلا تعریف نشده است و $testvariable خط 9
    فقط در داخل  function قابل دسترسی هستند.



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



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

    مثلا در مثال  زیر



    [LEFT] PHP Code:
     [LEFT]<code  style="white-space: nowrap;">
    <code>[COLOR=#000000]
    1: <html>

    2: <head>

    3: <title>Listing 6.7</title>

    4: </head>

    5: <body>

    6: [COLOR=#0000BB]<?php

    7
    [/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]$life [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]42[/COLOR][COLOR=#007700];

    [/COLOR][COLOR=#0000BB]8[/COLOR][COLOR=#007700]: function [/COLOR][COLOR=#0000BB]meaningOfLife[/COLOR][COLOR=#007700]()

    [/COLOR][COLOR=#0000BB]9[/COLOR][COLOR=#007700]: {

    [/COLOR][COLOR=#0000BB]10[/COLOR][COLOR=#007700]: print [/COLOR][COLOR=#DD0000]"The meaning of life is $life<br>"[/COLOR][COLOR=#007700];

    [/COLOR][COLOR=#0000BB]11[/COLOR][COLOR=#007700]: }

    [/COLOR][COLOR=#0000BB]12[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]meaningOfLife[/COLOR][COLOR=#007700]();

    [/COLOR][COLOR=#0000BB]13[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]?>

    [/COLOR]14: </body>

    15: </html>[/COLOR]
    </code>
    </code>
    [/LEFT]
    [/LEFT]
    خروجی  خالی چاپ می شود و مقدار $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 چاپ  خواهد شد.



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

    [B]مهم : [/B]دقت کنید که اگه $life داخل تابع تغییر دهید مقدار $life  در کل برنامه عوض می شود.
     
  5. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    آموزش پی اچ پی - قسمت پنجم - جی دی

    آموزش پی اچ پی - قسمت پنجم- جی دی





    سلام ! [​IMG]nload="NcodeImageResizer.createOn(this);" border="0">

    بعد از يک ماه تاخير بالاخره قسمت پنجم رو هم نوشتم ! [​IMG]nload="NcodeImageResizer.createOn(this);" border="0">

    تو اين قسمت ميخواه در باره جي دي صحبت کنم و راه استفاده از اونو بگم ... [​IMG]nload="NcodeImageResizer.createOn(this);" border="0">

    اول يه مقدار مقدمه ! [​IMG]nload="NcodeImageResizer.createOn(this);" border="0">



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

    پي اچ پي ميتونه عکس رو مستقيم به سوي مرو گر هدايت کنه

    البته پي اچ پي به صورت پيش فرض اي ساخت عکس پشتيباني نميکنه که بايد آن را
    نصب کنيد ( GD ) البته اين کتابخانه ( library ) روي بيشتر سرور ها به
    صورت پيش فرض نصب هست ...

    اما اگر نصب نبود ميتوانيد اين را از GD Graphics Library دانلود و نصب کنيد و يا به مدير سرور خود بگوييد که آن را نصب کند ...

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



    يک مثال :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php



    header
    ("Content-type: image/png");

    $string = $_GET['text'];

    $im = imagecreatefrompng("images/button1.png");

    $orange = imagecolorallocate($im, 220, 210, 60);

    $px = (imagesx($im) - 7.5 * strlen($string)) / 2;

    imagestring($im, 3, $px, 9, $string, $orange);

    imagepng($im);

    imagedestroy($im);



    ?>

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

    HTML Code:
    <img src="button.php?text=text"></pre>

    حالا اين مثال چيکار ميکنه ؟

    مثال بالا ( button.php ) اول فايل images/button1.png رو باز ميکنه و بعد متغير TEXT رو روش مينويشه ( به صورت يک لايه جدا )

    مثلا اگ شما دکمه هاي يکجور زيادي با متن متفاوت داريد ميتوانيد با استفاده
    از اين اسکيپت در وضا صرفه جويي کنيد و ديگر همه دکمه ها را در سايت آپلود
    نکنيد و به عبارتي دکمه به صورت ديناميکي ( dynamically ) ساخته ميشود

















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



    gd_info

    دادن اطلاعات در باره نسخه و ديگر چيزهاي GD نصب شده

    :

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



    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php

    print_r
    (gd_info());

    ?>

    </code>
    </code>
    مثال بالا خروجي زير را بدنبال داره ( براي همه يکسان نيست )

    Code:
    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] =>
    )</pre>

    ------------------------------

    getimagesize

    گرفتم اندازه عکس ( ابعاد)

    با استفاده از اين تابع ميتوان اندازه عکس رو به دست آورد مثلا 48*52

    اين تابع از GIF, JPG, PNG, SWF, SWC, PSD, TIFF, BMP, IFF, JP2, JPX, JB2, JPC, XBM, or WBMP پشتيباني ميکند

    مثلا :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php

    list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");

    echo
    "<img src=\"img/flag.jpg\" $attr alt=\"getimagesize() example\" />";

    ?>

    </code>
    </code>
    در نسخه 4.0.5 به بعد از URL هم پشتيبانش شد :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php

    $size
    = getimagesize("http://www.example.com/gifs/logo.gif");

    ?>

    </code>
    </code>


    ------------------------------

    image_type_to_extension

    گرفتن پسون عکس براي image type ()

    روش استفاده :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    image_type_to_extension ( int imagetype [, bool include_dot] )



    </code>
    </code>




    -----------------------------

    image_type_to_mime_type

    گرفتن mime type يک عکس

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

    مثال :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php

    header
    ("Content-type: " . image_type_to_mime_type(IMAGETYPE_PNG));

    ?>

    </code>
    </code>
    اين تابع ميتواند حاوي يکي از خروجي هاي زير باشد :

    خروجي نوع عکس

    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



    توجه : اين تابع نيازي به کتابخانه جي دي ندارد [​IMG]nload="NcodeImageResizer.createOn(this);" border="0">



    --------------------------------------

    image2wbmp

    دادن خروجي به يک فايل يا مرور گر

    مثال :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php



    $file
    = 'php.png';

    $image = imagecreatefrompng($file);



    header('Content-type: ' . image_type_to_mime_type(IMAGETYPE_WBMP));

    image2wbmp($image); // output the stream directly



    ?>

    </code>
    </code>


    لیست بقیه توابع رو بعدا میزارم ( حد اکثر تا هفتهی دیگر ...)
     
  6. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    براي مثال :



    Array index value

    0 Mehdi

    1 Asef

    2 tsotodeh

    3 knowhow

    4 carp

    بزاريد چندين مقدار رو در يك مقدار ديگر ذخيره كنيم :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    $users=array("Mehdi","Asef","tsotodeh","knowhow","carp");



    </code>
    </code>
    در اينجا اگه بخواهيم مقدار Asef رو چاپ كنيم كافيه بنويسيم :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    Print "$users[1]";



    </code>
    </code>
    و براي اضافه كردن آرايه جديد ميتونيم از دستور زير استفاده كنيم

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    $users[]="azemati";



    </code>
    </code>
    وبراي صدا كردن فقط انديس يا ايندكسش رو صدا بزنيم .



    در ضمن ميتونيم خودمون هم ايندكس گزاري كنيم يعني بجاي 0 – 1- 2 – 3 - .. .. خودمون حروف بزاريم براي مثال به كد زير توجه كنيد :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    $user = array (name=>"Asef",job=>"Programming",age=>24,

    "skill"=>"everyThing");



    </code>
    </code>
    خوب حالا براحتي هركدوم رو كه بخواهيم ميتونيم صدا بزنيم :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    Print"$user[name]";

    Or

    Print
    "$user[job]";



    </code>
    </code>
    همونطور كه ديديد در قسمت تعريف كردن ارايه ها حروف را در داخل گيومه
    قرار ميديم و قرار دادن اعداد اجباري نيست و هم ميتونن داخل گيومه قرار
    بگيرن هم نگيرن .

    همچنين ميتونيم متغيير هاي داخل ارايمون رو مقدار دهي كنيم براي مثال :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    $user[name]="azemati";

    $user[job]="webmaster";



    </code>
    </code>
    و براي تعريف كردن چندين ارايه با چندين مقدار به اين صورت عمل ميكنيم :



    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    $user = array (array(name=>"Asef",job=>"Programming",age=>24,

    "skill"=>"everyThing"),array(name=>"mehdi",job=>"Programming",age=>18,

    "skill"=>"noThing"),array(name=>"daftarkhatereh",job=>"Programming",age=>24,

    "skill"=>"everyThing") );



    </code>
    </code>
    و براي صدا كردن مقداري خاص به اين شكل عمل ميكنيم :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    print $user[0][job];

    //Print "Programming"



    </code>
    </code>
    براي پي بردن به تعداد مقادير يك ارايه ميتوانيد از دستور

    Print count($user);

    استفاده كنيد . ولي دقت كنيد كه در دستور كانت مقدار ايندكس ما از صفر شروع
    نميشه بلكه از يك شروع ميشه براي مثال براي دسترسي به مقداري با استفاده
    از كانت به اين صورت عمل ميكنيم :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php

    $users
    =array("a","b","c","d","e");

    print
    $users[count($users)− 1];

    //Print 5

    ?>

    </code>
    </code>
    كه در اين كد اخرين مقدار يعني حرف اي را چاپ ميكنه !

    ارايه ها را به شكل هاي گوناگوني ميتوان استفاده كرد و كاربرد بسيار زيادي دارند

    دستور ديگري كه ميخواهيم اشنا بشيم دستور Array_merge() هستش كه با مثالي اشنا ميشيم :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php

    $first
    = array("a", "b", "c");

    $second = array(1,2,3);

    $third = array_merge( $first, $second );

    foreach (
    $third as $val )

    {

    print
    "$val<BR>";

    }

    ?>

    </code>
    </code>
    در اين مثال ايم كد اين متغيير هاي اول و دوم را با هم تركيب ميكنه و در متغيير سوم قرار ميده

    اما دستور foreach مثل دستور for عمل ميكنه با اين تفاوت كه در اينجا
    مياد متغيير سوم رو در متغيير جديدي ميزاره و اون رو چاپ ميكنه شكل كلي
    اين دستور به اين صورت هستش :



    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    foreach( $array as $temp )

    {

    //...

    }



    </code>
    </code>
    براي مرتب كردن يك ارايه از دستور sort استفاده ميكنيم مانند مثال

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php

    $an_array
    = array("x","a","f","c");

    sort( $an_array);

    foreach (
    $an_array as $var )

    {

    print
    "$var<BR>";

    }

    ?>

    </code>
    </code>
    بديهي است كه با اعداد هم ميتوانيم همچين كاري رو بكنيم

    همونطور كه ديديد با دستور sort(); ميتونيم مقادي يك ارايه رو مرتب كنيم.
    در مثال بالا در خروجي حروف به صورت مرتب شده نمايش داده ميشوند .

    دستور asort(); هم داريم كه بر اساس مقادير ارايه ها انها را مرتب ميكنه باز به مثالي ديگر توجه كنيد :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php

    $first
    = array("first"=>5,"second"=>2,"third"=>1);

    asort( $first );

    foreach (
    $first as $key => $val )

    {

    print
    "$key = $val<BR>";

    }

    ?>

    </code>
    </code>






    كه در خروجي اين چنين چاپ ميشود :

    third = 1

    second = 2

    first = 5

    در دستور بالا همونطور كه ديد بر حسب مقادير مرتب شد ولي اگر بخواهيم بر
    حسب ايندكسي كه ميدهم مرتب بشه ميتونيم از دستور ksort(); استفاده كنيم

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php

    $first
    = array("x"=>5,"a"=>2,"f"=>1);

    ksort( $first );

    foreach (
    $first as $key => $val )

    {

    print
    "$key = $val<BR>";

    }

    ?>

    </code>
    </code>
    كه در خروجي چاپ ميكنه

    a = 2

    f = 1

    x = 5



    اين بخش نيز به پايان رسيد
     
  7. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    آموزش پي اچ پي (كلاس ها) قسمت هفتم





    ابجكت ها :

    ابجكت چيست ؟ مجموعه اي از متغييرها و توابع است كه از يك الگوي خاص به نام كلاس ساخته شده اند .

    اما كلاس ها چي هستن ؟ فرض كنيد ما يك شركت داريم كه اين شركت از بخش هاي
    مختلفي تشكيل شده است حال ما در هربخش احتياج داريم كه هر ماه يك گزارش
    مالي بگيريم ! ما اينجا دو كار ميتونيم بكنيم هم ميتونيم براي هربخش چند
    نفر بزاريم و انها گزارش مالي را تهيه كنند و هر ماه تحويل دهند در اين
    صورت در هربخش شلوغي و همچنين كارمند بيشتري نيازمنديم ! راه ديگر اينست كه
    يك قسمت به عنوان اتاق گزارش مالي درست كنيم و هر بخش داده هاي خود را به
    اين قسمت بدهيم و گزارش مالي خود را دريافت كنيم

    در اين روش هم بخش ها منظم تر خواهند بود و هم ديگر احتياج به كارمند اضافي نداريم .

    در اينجا ابجكتها نقش كارمند در بخش گزارش مالي را بر عهده دارند فكر ميكنم مفهوم كلاس را درك كرده باشيد .

    بزاريد شكل كلي يك كلاس را برايتان نشان دهم

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    Class First_class

    {

    //اين شكل كلي از يك كلاس هستش

    }



    </code>
    </code>
    پروپرتي ها:

    آبجكتها به متغيير هاي خاصي دسترسي دارند كه به آنها پروپرتي ميگويند اين
    پروپرتي ها ميتونند در هرجاي بدنه كلاس باشند اما براي اينكه كد مون مرتب
    باشه بهتره كه در بالاي كلاس تعريف بشن. بگزاريد با مثالي ديگر بيشتر توضيح
    بدم :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    Class f_class {

    var
    $name="mehdi";

    }

    $obj1=new f_class();

    $obj2=new f_class();

    $obj1->name="Ali";

    print
    "$obj1->name<br>";

    print
    "$obj2->name<br>";



    </code>
    </code>
    ديديم كه براي اختصاص دادن يك كلاس به يك متغيير اينگونه عمل كرديم

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    $obj1=new f_class();



    </code>
    </code>
    علامت <- به شما اجازه ميده تا به متغيير هاي درون يك كلاس
    دسترسي داشته باشيد و اونها رو تغيير بديد همونطور كه در كد ميبينيد ما در
    خط ششم متغيير name در ابجكت يك رو مساوي علي قرار داديم كه باعث عوض شدن
    متغيير ميشه همچنين براي چاپ خروجي نيز به همين صورت عمل كرديم ولي بدون
    علامت مساوي

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    Print " $obj1->name ";



    </code>
    </code>
    متد ها :

    متدها در واقع توابعي هستند كه داخل يك كلاس وجود دارند بزاريد با يك مثال واضح تر بيان كنم :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    class f_class

    {

    var
    $name;

    function
    sayHello()

    {

    Print
    "Hello World";

    }

    }

    $obj1=new f_class();

    $obj1->sayHello();

    // Hello World چاپ ميشود



    </code>
    </code>
    همونطور كه ميبينيد يك متد خيلي شبيه به تابع معمولي هستش با اين
    تفاوت كه متد هميشه داخل كلاس تعريف ميشه در ضمن شما ميتونيد با علامت
    <- يك متد ابجكت را صدا بزنيد

    مهمتر اينكه متدها به اعضاي متغيير هاي يك كلاس دسترسي دارند

    شما همين الان ديديد كه چطوري به يك پروپرتي از خارج يك آبجكت دسترسي پيدا
    كنيم اما چطوري يك آبجكت ميتونه خودشو به اصطلاح Return كنه :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    class f_class

    {

    var
    $name="mehdi";

    function
    sayHello()

    {

    Print
    "Hello My names $this->name<br>";

    }

    }

    $obj1=new f_class();

    $obj1->sayHello();

    // Hello My names mehdi چاپ ميكنه



    </code>
    </code>
    يك عبارت مخصوص رو بكار برديم به اسم this$ تا كلاس به آبجكت كنوني
    Return بشه شما با تركيب اين عبارت با علامت <- ميتونيد داخل يك كلاس
    به هر پروپرتي و متدي كه بخواهيد دسترسي داشته باشيد حالا اگه بخواهيم به
    پروپرتي name در همه آبجكت هاي كلاسمون مقدار خاصي بديم ميتونيم به اين
    صورت عمل كنيم :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    class f_class {

    var
    $name="mehdi";

    function
    setName($n){

    $this->name=$n; }

    function
    sayHello()

    {

    Print
    "Hello My names $this->name<br>";

    }

    }

    $obj1=new f_class();

    $obj1->setName("Ali");

    $obj1->sayHello();

    // Hello My names Ali چاپ ميكنه



    </code>
    </code>
    همونطور كه ديديد اومديم يه تابع تعريف كرديم كه اسم رو بتونيم همه
    جا تغيير بديم واز دستورthis براي عوض كردنش داخل كلاس استفاده كرديم.

    در ابتدا اسم ما مهدي بود ولي بعد از اينكه تابع عوض كردن اسم رو بكار برديم متد صدا زده شد و اسم تغيير كرد

    كد بالا رو ميتونستيم بصورت ساده تر وكمي پيچيده تر هم بنويسيم :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    class first_class {

    var
    $name;

    function
    first_class( $n="mehdi" ) {

    $this->name = $n;

    }

    function
    sayHello() {

    print
    "hello my name is $this->name<BR>";

    }

    }

    $obj1 = new first_class("َAli");

    $obj2 = new first_class("Asef");

    $obj1->sayHello();

    // hello my name is Ali چاپ ميكنه

    $obj2->sayHello();

    // hello my name is Asef چاپ ميكنه



    </code>
    </code>
    همونطور كه ديديد اومديم و يه متد يا تابع با همون اسم كلاس خودمون
    ساختيم و مقدار ديفالتش رو روي مهدي گزاشتيم كه اگر هيچي وارد نشد اين
    عبارت چاپ بشه

    حالا در پايين در خط دهم و يازدهم هنگامي كه ابجكت يك و ابجكت دو رو به
    كلاس ها اختصاص ميديم همون موقع هم مقدار اسم رو عوض ميكنيم و مشكلي پيش
    نمياد كلاسمون هنگامي كه متد صدا زده ميشه خود به خود صدا زده ميشه.

    حال بزاريد با عبارت ديگري به اسم extends اشنا بشيم اين عبارت به اين معني ارث بردن است به اين مثال توجه كنيد :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    class first_class{

    var
    $name = "mehdi";

    function
    first_class( $n ) {

    $this->name = $n;

    }

    function
    sayHello(){

    print
    "Hello my name is $this->name<br>";

    }

    }

    class
    second_class extends first_class {

    }

    $test = new second_class("son of mehdi");

    $test->sayHello();

    // outputs "Hello my name is son of mehdi"



    </code>
    </code>
    همونطور كه ميبينيد ما كلاس دو رو تنظيم كرديم تا از كلاس يك ارث بري كنه وهمه متد هاي كلاس يك را خواهد داشت

    ما ميتونيم اينجا داخل كلاس دو يك تابع با اسم sayHello بسازيم و بگيم
    عبارت I dont know my name رو چاپ كنه در اينصورت اگه حتي در خط 12 ام ما
    يك عبارت براي تعويض اسم بديم تاثيري نميكنه و همون عبارت I dont know my
    name رو چاپ ميكنه راه ديگري هم هست و اون چاپ هردو كلاس باهم هست :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    class first_class {

    var
    $name = "harry";

    function
    first_class( $n ) {

    $this->name = $n;

    }

    function
    sayHello() {

    print
    "Hello my name is $this->name<br>";

    }

    }

    class
    second_class extends first_class {

    function
    sayHello() {

    print
    "I'm not going to tell you my name -- ";

    first_class::sayHello();

    }

    }

    $test = new second_class("son of harry");

    $test->sayHello();

    // "I'm not going to tell you my name -- Hello my name is son of harry" چاپ ميكنه



    </code>
    </code>
    همونطور كه ميبينيد دستور ( متد:: وارث ) ما ميتونيم هر متدي
    رو كه ما تغييرش داديم دوباره صدا بزنيم چون در كلاس دو ما متد sayHello
    رو تغيير داديم با اين دستور اونو دوباره برگردونديم .



    خوب اين درس هم تموم شد احتمالا بعضي اشكالات هم داره كه با كمك شما رفع
    ميشه درضمن من بسياري از مثال هاي خود كتاب رو نياوردم چون بسيار گيج كننده
    بود حتا خودمم بهشون نگاه نكردم
     
  8. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    آموزش پي اچ پي (فرم ها) – قسمت هشتم
    كار كردن با فرم ها

    خوب در اين قسمت ميخواهيم ببينيم چجوري با استفاده از فرمها اطلاعات رو بين صفحات ارسال كنيم.

    خوب يه مثال ساده ولي پركاربرد :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    #this page name is a.php

    <form action="b.php" method="get">

    <
    input type="text" name="user">

    <
    input type="submit" name="btn">

    </
    form>



    </code>
    </code>
    قصد داريم اطلاعات يك تكست باكس رو كه در اين صفحه قرار داره توسط
    صفحه دوم به اسم b.php بخونيم پس اسم اين صفحه رو كه هيچ كد پي اچ پي
    توش استفاده نكرديم ميزاريم a.php و ذخيره ميكنيم.

    حالا ميرسيم به صفحه دوم اين كد رو تو صفحه دوم قرار بديد .

    <?php

    print "$user"

    ?>

    خيلي ساده و به اين صورت اطلاعات رو ميگيريم يوزر اسم تكست باكسي هست كه تو فرم اول قرار داشت.

    بقيه كد ها هم اچ تي ام هست و نيازي به توضيح نيست فقط در مورد get بگم
    كه اين دستور متغيير ها رو موقع ارسال تو ادرس نشون داده ميشه و شايد بعضي
    جاها زياد راه مطمئني نباشه ولي اگه بجاي اين عبارت از post استفاده
    كنيم ديگه در ادرس نشون داده نميشه .

    تركيب كردن پي اچ پي با اچ تي ام ال :



    به اين كد نگاه كنيد :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <form action="<?php print $PHP_SELF?>" method="POST">



    name: <input type="text" name="user">



    </form>

    </code>
    </code>
    وقتي اين فرم رو اجرا كنيم فرم همواره خودشو صدا ميزنه چون ما از
    عبارت $PHP_SELF استفاده كرده ايم توجه كنيد كه ما هيچ دكمه اي رو صفحه
    قرار نداديم و در بيشتر مرورگرها با زدن كليد اينتر ميتونيم فرم رو اجرا
    كنيم .

    البته در كد بالا هيچ اطلاعاتي رو بيرون نميده ولي در كد زير ميخواهيم يه بازي ساده بنويسيم تا بيشتر متوجه بشيم :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php

    $num_guess
    =42;

    $msg=" ";

    if (! Isset(
    $guess))

    {

    $msg="welcome To This Little Game";

    }

    elseif (
    $guess>$num_guess)

    {

    $msg="number $guess is Big! Try Smaller number.";

    }

    elseif(
    $guess<$num_$guess)

    {

    $msg="Number $guess is Small ! Try Big Number";

    }

    else
    // vagti mosavi bashe

    {

    $msg="Well Done You Win";

    }

    ?>

    </code>
    </code>
    توضيحات : با دستور ! كه اشنا هستيد همون دستور نقض ، اما دستور
    isset اين دستور چك ميكنه ببينه اصلا اطلاعاتي وارد شده يا نه ما در خط
    اول چك ميكنيم ببينم (اگه نه اطلاعاتي وارد شده) انگاه پيغام خوش آمد گويي
    رو پخش كن اين كد موقعي ميتونه اتفاق بيفته كه برا اولين بار صفحه رو باز
    كرده يا هيچ اطلاعاتي وارد نكرده .

    حالا ميرسيم به قسمت اچ تي ام ال اين كد رو زير كد بالايي قرار بديد

    PHP Code:
    <code style="white-space: nowrap;">
    <code>


    <h1>

    <?php print $msg ?>

    </h1>

    <form action="<?php print $PHP_SELF?>" method="POST">

    Guess Number : <input type="text" name="guess">

    </form>

    </code>
    </code>
    خوب اين كد نيز اطلاعات رو از كاربر ميگيره و صفحه رو دوباره اجرا ميكنه و پيغام مناسب رو پخش ميكنه .

    ميخوايم با يه دستور جديد و كاربردي اشنا بشيم فرض كنيم بعد از اينكه كاربر
    در بازي بالا برنده شد ميخواهيم او را به يه صفحه جديد بفرستيم يعني
    ريدايركت كنيم ميتونيم از دستور زير استفاده كنيم اين دستور رو بجاي پيغامي
    بزاريد كه وقتي كاربر برنده ميشه انتخاب ميشه يعني بعد از else قرار
    بديد :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    header("Location: page.html");

    exit;



    </code>
    </code>
    با دستور exit هم از داخل اين كد بيرون ميايم و به صفحه بعد منتقل ميشيم .

    نوبتي هم باشه نوبت كار با فايل هاست :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <form enctype="multipart/form-data" action="<?print $PHP_SELF?>" method="POST">

    <input type="hidden" name="MAX_FILE_SIZE" value="51200">

    <input type="file" name="fupload"><br>

    <input type="submit" value="upload!">

    </form>

    </code>
    </code>
    خوب ما با استفاده از دستور enctype="multipart/form-data" درواقع ميايم همون فايل ديالوگ رو باز ميكنيم

    در قسمت بعد ما يك متغيير مخفي ايجاد ميكنيم و سايز فايل رو تعيين ميكنيم و توش قرار ميديم كه در اينجا 51200 انتخاب كرديم

    حالا با دو خط بعد يه تكست باكس و يه دكمه ميزاريم . ما اينجا به كاربر اجازه ميديم تا 50 كيلوبايت فايل اپلود كنه .

    البته كد بالا جنبه نمايش داشت و عملا كاربرد زيادي نداره قبل از اينكه
    نمونه قابل اجرا رو امتحان كنيم بزاريد ليستي از متغيير هاي فايل اپلود رو
    براتون بگم

    مثال توضيح نام متغيير

    /tmp/php3d3ef مسير فايل اپلود شده $fupload

    Test.gif اسم فايل اپلود شده $fuploadname

    51200 حجم بر حسب بايت $fuploadsize

    Image/gif نوع فايل اپلودي $fupload type

    حالا مثال ، در اين مثال ما اطلاعات فايل اپلئدي رو نمايش ميديم

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    1: <html>

    2: <head>

    3: <title>Listing 9.15 A file upload script</title>

    4: </head>

    5: <?php

    6
    : $file_dir = "/home/mehdi/htdocs/uploads";

    7: $file_url ="http:// www.safary.com/mehdi/uploads";

    8: if ( isset( $fupload ) )

    9: {

    10: print "path: $fupload<br>\n";

    11: print "name: $fupload_name<br>\n";

    12: print "size: $fupload_size bytes<br>\n";

    13: print "type: $fupload_type<p>\n\n";

    14: if ( $fupload_type == "image/gif" )

    15: {

    16: copy ( $fupload, "$file_dir/$fupload_name") or die ("Couldn't copy");

    17:

    18: print "<img src=\"$file_url/$fupload_name\"><p>\n\n";

    19: }

    20: }

    21: ?>

    22: <body>

    23: <form enctype="multipart/form-data" action="<?php print $PHP_SELF?>"

    method="POST">

    24: <input type="hidden" name="MAX_FILE_SIZE" value="51200">

    25: <input type="file" name="fupload"><br>

    x<input type="submit" value="Send file!">

    27: </form>

    28: </body>

    29: </html>

    </code>
    </code>
    فكر نميكنم نيازي به توضيح باشه بجز اين خط ( $fupload,
    "$file_dir/$fupload_name") copy اين دستور فايل مورد نظر رو روي سرور كپي
    ميكنه و اگه اشكالي پيش اومد عبارت Couldn't copy رو چاپ ميكنه در اينجا
    ما پس از اينكه از كاربر فايل رو درخواست كرديم اطلاعات مربوط به اون فايل
    رو نمايش ميديم كه ما در اينجا فرض كرديم كه كاربر يك عكس را اپلود كرده
    است .
     
  9. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    آموزش پي اچ پي قسمت نهم(كار با فايلها)
    كار با فايلها در پي اچ پي

    پيوست دادن كدهاي ديگر در كد خود مان:

    شما ميتونيد يك كد رو در يك فايل ديگر بنويسد و هرجا لازم شد در يك كد ديگر
    كه در فايل ديگري هم قرار داره اونو صدا بزنيد تابع Include(); اين
    امكان رو به شما ميده و باعث سهولت و كم حجم شدن صفحات ميشه .

    اين تابع فقط به يك آرگومان نياز داره و اون مسير فايل پي اچ پي هست كه ميخوايم به صفحمون پيوند بديم

    بزاريد با يك مثال راحتتر بيان كنم : فرض كنيد ما در فايل a.php يك كد داريم كه يك پيغام رو چاپ ميكنه

    حالا ما ميخوايم همين دستور در فايل اول رو در فايل b.php بدون نوشتن دوباره دستور و با دستور اينكلود بنويسيم كافيه بنويسيم

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    // file name is b.php

    <?php

    include("a.php");

    ?>

    //will Print message in a.php

    </code>
    </code>
    البته چون در اينجا ما در فايل اولمون يك خط دستور داريم فرقي نميكنه
    ولي اگه چندين خط و چندين دستور باشه كار مارو خيلي راحت ميكنه چون فقط با
    يه خط كد ميتونيم همون دستورات رو صدا بزنيم .

    حتي ميتونيم يك مقدار رو با دستور اينكلود صدا بزنيم يا دستور اينكلود رو با توجه به يه شرط صدا بزنيم.

    يك مثال :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php

    //this file name is a.php

    $ret=(4+4);

    return
    $ret;

    ?>

    </code>
    </code>
    _______

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php

    //this file name is b.php

    $flag=true;

    if(
    $flag) {

    $resualt=include("a.php");

    print
    " The Sum Of (4+4) Is $resualt";

    }

    ?>

    </code>
    </code>
    همونطور كه ديديد ميتونيم طوري تعريف كنيم كه اگه شرط درست نبود اصلا
    دستور اينكلود اجرا نشه و در خط بعدي مقدار فايل a.php رو توي يه متغيير
    ديگه مينوسيسم و چاپ ميكنيم .

    خوب بهتر بود قبل از اينكه بقيه آموزش رو بگم اينارو ميدونستيد

    حالا ميرسيم به كار با فايل ها :

    اولين تابعي كه ميخوايم بررسي كنيم تابع چك كردن وجود يك فايل هست !

    به اين مثال توجه كنيد :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php

    if (file_exists("a.php"))

    print
    "The File Exists";

    ?>

    </code>
    </code>
    حتي ميتونيد با تابع ديگري بفهميد مسير داده شده يك فايل هست يا يك دايركتوري

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    //Check if it's a file

    <?php

    if(is_file("a.php")

    print
    "yes this is file";

    ?>

    /*-----------------------------*/

    //Check if Current Path is a dir

    <?php

    if(is_dir("/tmp"))

    print
    "/tmp is valid";

    ?>

    </code>
    </code>
    تابع ديگري كه وجود داره توابع is_readable , is_writeable ,
    is_executeable هستن كه چك ميكنن ببينن فايل مورد نظر قابل خواندن و يا
    نوشتن ويا اجرا شدن هست يا مسير داده شده معتبر هست يا نه و يك مقدار از
    نوع بولين برميگردونه .

    تابع ديگري نيز وجود دارد كه سايز يك فايل رو برميگردونه خيلي ساده

    Print filesize("a.php");

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

    تابع ديگري كه ميخوايم بررسي كنيم تابع fileatime(); ميباشد كه اخرين
    باري كه يك فايل دسترسي پيدا كرد رو به ما بر ميگردونه ما در مثال زير
    ميخوايم بدونيم فايل a.php در چه تاريخ و زماني براي اخرين بار دسترسي
    پيدا كرده است :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php

    $lasttime
    =fileatime("a.php");

    print
    "The File last time accessed in ".date("D d M Y g:i A",$lasttime).".";

    // Will Print Sat 14 jan 2006 10:30 Pm

    ?>

    </code>
    </code>
    تابع filemtime(); نيز مشابه fileatime(); هستش با اين تفاوت كه
    تاريخ و زمان اخرين باري كه فايل ويرايش شد رو برميگردونه . تابع
    filectime(); نيز وجود داره كه در سيستم هاي يونيك تاريخ تغيير يا ويرايش
    فايل رو برميگردونه ولي در پلت فرم هاي ديگه تاريخ بوجود آمدن فايل رو
    برميگردونه

    حالا ميرسيم به توابع كاربردي تر :

    تابع

    touch("file-path.txt");

    در صورتي كه فايلي با اين نام وجود نداشته باشد اين فايل رو ايجاد ميكنه
    ولي اگه وجود داشته باشه كاري نميكنه و فقط تاريخ ويرايش فايل تغيير پيدا
    ميكنه و فايل از بين نميره



    با تابع

    unlink("file-path.txt");

    ميتونيد يك فايل رو پاك كنيد

    نكته : در سيستم هاي يونيكس براي اينكه يك فايل را پاك يا ويرايش يا دست يابي پيدا كنيم لازم است كه دسترسي به فايل رو داده باشيد .

    بازكردن فايل قبل از خواندن و نوشتن :

    قبل از اينكه بتونيد يك فايل رو بخونيد يا محتوايش رو عوض كنيد به اين احتياج داريد كه اون فايل رو باز كنيد

    شما با اين دستور ميتونيد يك فايل رو براي خواندن اماده كنيد

    $f=fopen("file.txt",'r');

    و با اين دستور ميتونيد فايل رو براي نوشتن اماده كنيد

    $f=fopen("file.txt",'w');



    و براي اضافه كردن اطلاعات به يك فايل بايد از اين دستور استفاده كنيد (َAppend)



    $f=fopen("file.txt",'a');



    بهتره قبل از اينكه اقدام به ويرايش يا باز كردن يك فايل كنيد اون رو امتحان كنيد ببينيد اجازه باز شدن يا ويرايش شدن رو داره ؟

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    If ($fp=fopen("file.txt",'w'))

    {

    // codehaie marboot be viraiesh file

    }



    </code>
    </code>
    يا ميتونيد بجاي كد بالا اينگونه عمل كنيد

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    ($fp=fopen("file.txt",'w')) or die("Could Not open file");



    </code>
    </code>
    اگه دستور فوق مقدار درست رو برگردونه پيغام Could Not open file نشون داده نميشه در غير اينصورت نشون داده ميشه .

    همون طور كه متوجه شديد هر عملياتي كه بخوايم بر سر فايل اجرا كنيم بايد داخل :

    Fopen();



    // Code

    Fclose();



    انجام بديم.

    پي اچ پي امكانات زيادي رو براي خوندن يك فايل در اختيار ما ميزاره بعنوان
    مثال شما ميونيد يك فايل رو برحسب بايت يا برحسب لاين يا برحسب كاراكتر
    بخونيد .

    بزاريد ابتدا يك مثال رو نگاه كنيم و بعد توضيحات مربوطه رو بخونيم :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php

    $filename
    = "test.txt";

    $fp = fopen( $filename, "r" ) or die("Couldn't open $filename");

    while ( !
    feof( $fp ) )

    {

    $line = fgets( $fp, 1024 );

    print
    "$line<br>";

    }

    ?>

    </code>
    </code>
    با استفاده از دستور feof(); چك ميكنيم ببينم به اخر فايل رسيديم
    يا نه و اگه نه ميايم خط به خط با دستور وايل خط هاي فايل رو داخل يك
    متغيير ميريزيم و اونها رو چاپ ميكنيم . دستور fgets($fp,1024) اينكارو
    ميكنه و ميگه كه طول هر خط ميتونه تا 1024 بايت باشه .

    ما ميتونيم مقدار خاصي از فايلمون رو بخونيم مثلا 16 بايت يا 16 كاراكتر از فايلمون رو بخونيم

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php

    $filename
    = "test.txt";

    $fp = fopen( $filename, "r" ) or die("Couldn't open $filename");

    while ( !
    feof( $fp ) )

    {

    $chunk = fread( $fp, 16 );

    print
    "$chunk<br>";

    }

    ?>

    </code>
    </code>


    همونطور كه ديديد با دستور fread( $fp, 16 ); ما 16 كاراكتر از فايلمون رو ميخونيم .

    شما ميتونيد با تابع fseek() جاي مشخصي از فايل رو بخونيد به مثال زير نگاه كنيد

    PHP Code:
    <code style="white-space: nowrap;">
    <code>


    <?php

    $filename
    = "test.txt";

    $fp = fopen( $filename, "r" ) or die("Couldn't open $filename");

    $fsize = filesize($filename);

    $halfway = (int)( $fsize / 2 );

    fseek( $fp, $halfway );

    $chunk = fread( $fp, ($fsize − $halfway) );

    print
    $chunk;

    ?>

    </code>
    </code>
    در كد بالا ما نيمه دوم يك فايل رو چاپ ميكنيم .همه چيز واضح و روشن هست ونيازي به توضيح نيست

    دستور fgetc(); مثل دستور fgets() ميباشد كه اگه در كد بالا كه خط به
    خط يك فايل رو اجرا ميكرد بزاريد كاراكتر به كاراكتر فايل رو نشون ميده .



    براي نوشتن يا اضافه كردن مقدار به يك فايل بايد ابتدا فايل رو بصورت

    Foper("file.txt",'w');

    Or

    Fopen("file.txt",'a');



    شما ميتونيد با تابع fwrite(); داخل يك فايل مقداري رو قرار بديد ، دقت
    كنيد كه در اينصورت محتواي فايل قبلي پاك ميشه و ميتونيد با تابع fputs();
    يك مقدار رو به فايل مورد نظر اضافه كنيد .

    كار كردن با اين دستورها ساده هست با اين حال يك مثال ميارم :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>


    <?php

    $filename
    = "test.txt";

    $fp = fopen( $filename, "w" ) or die("Couldn't open $filename");

    fwrite( $fp, "Hello world\n" );

    fclose( $fp );

    print
    "Appending to $filename<br>";

    $fp = fopen( $filename, "a" ) or die("Couldn't open $filename");

    fputs( $fp, "And Hello To You\n" );

    fclose( $fp );

    ?>

    </code>
    </code>
    حال ميرسيم به تابع تعيين دسترسي فايل شما ميتونيد با دستور flock();
    براي يك فايل دسترسي هاي متفاوتي رو اعمال كنيد ليست شماره دسترسي ها به
    اين صورت است

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    1 ---- Sharing  اجازه خواندن ميده ولي نوشتن خير

    2
    ---- Exclusive  اجازه خواندن و نوشتن نميدهد

    3
    ---- Release  دسترسي هاي بالا را ازاد ميكند



    </code>
    </code>
    نوبتي هم باشه نوبت كار با پوشه هاست :

    شما ميتونيد با دستور mkdir() , rmdir() پوشه اي ايجاد يا پاك كنيد

    توابع ساده اي هستن و نيازي به مثال نيست

    يك مثال براي بيشتر آشنا شدن با اين نوع توابع ، ميخوايم فايل هاي داخل يك پوشه رو نمايش بديم

    PHP Code:
    <code style="white-space: nowrap;">
    <code>


    <?php

    $dirname
    = "testdir";

    $dh = opendir( $dirname );

    while (
    gettype( $file = readdir( $dh )) != boolean )

    {

    if (
    is_dir( "$dirname/$file" ) )

    print
    "(D)";

    print
    "$file<br>";

    }

    closedir( $dh );

    ?>

    </code>
    </code>
    ما با دستور opendir() پوشه مورد نظرمون رو در ابتدا باز ميكنيم

    سپس با دستور وايل مسير فايلهامون رو ميگيريم و چك ميكنيم اگه متعلق به
    اين دايركتوري بودن عبارت (D) و سپس اسم فايل و مسيرش رو چاپ ميكنيم

    در نهايت با دستور closedir() ميبنديم .

    دستور readdir مقدار درست يا نادرست رو برميگردونه و اين بر حسب اين هست
    كه هر عددي بجز صفر مقدارش ترو ميشه بزاريد با مثالي توضيج بدم فرض كنيم ما
    چهار تا فايل داريم

    كه بر حسب ايندكس ما ميايم اينارو داخل وايل چك ميكنيم و تا زماني كه
    ايندكس صفر نشده شرط وايل ما درست هست و ادامه ميده و هنگامي كه صفر شد از
    وايل خارج ميشه .
     
  10. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    آموزش پي اچ پي قسمت دهم - ديتابيس هاي فايلي


    كار با ديتابيس ها (فايل)



    اگه شما به ديتابيس هاس اس كيو ال مثل ماي اس كيو ال و اوراكل دسترسي
    نداريد ميتونيد از ديتابيس هاي DBM استفاده كنيد حتي اگه شما اگه
    نداشته باشينش پي اچ پي اون رو براي شما شبيه سازي ميكنه و به شما اجازه
    ميده داده هاتون رو توش ذخيره كنيد و بازيابي كنيد شون .

    در ضمن شما نياز به استفاده از دستورات اس كي ال نداريد چون بسيار راحت و انعطاف پذير هستن .

    در اين بخش ياد ميگيريم چطور :

    يك ديتابيس DBM رو باز كنيم

    چگونه داده را وارد كنيم

    چگونه داده را فراخواني كنيم

    چگونه تغيير ايجاد كنيم يا داده هارا پاك كنيم

    چگونه داده هاي پيچيده اي را وارد ديتا بيس كنيم

    باز كردن ديتا بيس :

    با استفاده از دستور dbmopen() شما ميتونيد ديتا بيس را باز كنيد و اين تا بع دو آرگومان ميگيره

    يكي مسير ديتابيسمون و ديگري نوع دسترسي به ديتا بيس كه نوع دسترسي ها به اين شكل هست



    توضيح نوع دسترسي

    در حالت فقط خواندي r

    براي خواندن و نوشتن w

    ساختن ديتابيس و اگر وجود دارد براي خواندن و نوشتن c

    ساخت يك ديتابيس جديد n



    با استفاده از دستور زير اگر ديتابيسي با اين نام وجود نداشته باشد باز ميشود :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    $db = dbmopen( "./products", "c" ) or die( "Couldn't open DBM" );



    </code>
    </code>
    نكته : دقت كنيد كه ما از دستور die براي زماني استفاده كرديم كه قادر به ايجاد ديتابيس نباشيم .

    وقتي كارمون با ديتا بيس تموم شد با استفاده از دستور زير ديتابيس رو ميبنديم .

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    dbmclose($db);



    </code>
    </code>
    اگه شما ديتابيس رو نبنديد قسمت هاي ديگري از برناممون كه به ديتابيس نياز دارند مجبور هستن تا صبر كنند و اين اصلا خوب نيست .



    اضافه كردن اطلاعات به ديتابيس :

    به مثال زير توجه كنيد :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php

    $db
    =dbmopen("./users","c") or die("Could not open DBM");

    dbminsert($db,"PersianTools.com","30000");

    dbminsert($db,"IranVig.com","6000");

    dbminsert($db,"CodeVig.com","100");

    dbmclose($db);

    ?>

    </code>
    </code>
    و اينگونه اطلاعات رو اضافه ميكنيم و حالا براي تغيير اطلاعات به اين شكل عمل ميكنيم :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php

    $db
    =dbmopen("./users","c") or die("Could not open DBM");

    dbmreplace($db,"PersianTools.com","464420");

    dbmreplace ($db,"IranVig.com","62351");

    dbmreplace ($db,"CodeVig.com","6463");

    dbmclose($db);

    ?>

    </code>
    </code>
    حالا كه ما تونستيم اطلاعاتمون رو وارد ديتابيس كنيم احتياج داريم تا اونهارو بتونيم بخونيم پس به اين صورت عمل ميكنيم :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    $users=dbmfetch($db,"PersianTools.com");



    </code>
    </code>
    خيلي ساده بزاريد اين اطلاعات رو در قالب يك جدول فراخواني كنيم :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <table border=1 cellpadding ="5">

    <tr>

    <td align="center"> <b>product</b></td>

    <td align="center"> <b>price</b> </td>

    </tr>

    <?php

    $db
    = dbmopen( "./users", "c" ) or die( "Couldn't open DBM" );

    $key = dbmfirstkey( $db );

    while (
    $key != "" )

    {

    $value = dbmfetch( $db, $key );

    print
    "<tr><td align = \"left\"> $key </td>";

    print
    "<td align = \"right\"> \$$value </td></tr>";

    $key = dbmnextkey( $db, $key );

    }

    dbmclose( $db);

    ?>

    </table>

    </code>
    </code>
    و به اين صورت تمام اطلاعات رو با استفاده از يك حلقه فراخواني ميكنيم

    حالا شايد سوال پيش بياد كه چجوري بفهميم دادمون قبلا تو ديتا بيس وارد شده يا نه ؟؟

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    if ( dbmexists( $db, "PersianTools.com" ) )

    print
    dbmfetch( $db, " PersianTools.com " );



    </code>
    </code>
    براي پاك كردن يك مقدار از دستور

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    dbmdelete($db,"PersianTools.com");



    </code>
    </code>
    استفاده ميكنيم .

    اضافه كردن يك مقدار پيچيده به ديتابيس :



    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    $array = array( 1, 2, 3, 4 );

    $db = dbmopen( "./ test", "c" ) or die("Couldn't open test DBM");

    dbminsert( $db, "arraytest", $array );

    print
    gettype( dbmfetch( $db, "arraytest" ) );



    </code>
    </code>
    خوب باشه يه مثال كامل :

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php

    $products
    = array("PersianTools.com" => array( users=>"2200",stats=>"1500", color=>"blue" ),

    "Iranvig.com" => array( users=>"2213",stats=>"1234",color=>"blue" )

    );

    $db = dbmopen( "./test", "c" ) or die("Couldn't open products DBM");

    while ( list (
    $key, $value ) = each ( $products ) )

    dbmreplace( $db, $key, serialize( $value ) );

    dbmclose( $db );

    ?>

    </table>

    </code>
    </code>
    بزاريد يك مثال كلي بزنيم تا بيشتر آشنا بشيم ما در اين مثال اطلاعات
    ديتابيسمون رو داخل يه جدول ميكشيم و كنار هر داده يه گزينه ميزاريم تا با
    انتخاب اون بتونه پاك كنه داده رو و همينطور يك تكست براي ويرايش ميزاريم و
    اين بخش رو تموم ميكنيم .

    PHP Code:
    <code style="white-space: nowrap;">
    <code>
    <?php

    $dbh
    = dbmopen( "./users", "c" ) or die("Couldn't open test DBM");



    if ( isset (
    $delete ) )

    {

    while ( list (
    $key, $val ) = each ( $delete ) )

    {

    unset(
    $prices[$val]);

    dbmdelete( $dbh, $val );

    }

    }



    if ( isset (
    $prices ) )

    {

    while ( list (
    $key, $val ) = each ( $stats ) )

    dbmreplace( $dbh, $key, $val );

    }



    if ( ! empty(
    $name_add ) && ! empty( $stats_add ) )

    dbminsert( $dbh, "$name_add", "$stats_add" );

    ?>



    <html>

    <body>

    <form action="<? print $PHP_SELF; ?>" action="POST">

    <table border="1">

    <tr>

    <td>delete</td>

    <td>Users</td>

    <td>stats</td>

    </tr>

    <?php

    $key
    = dbmfirstkey( $dbh );

    while (
    $key != "" )

    {

    $price = dbmfetch( $dbh, $key );

    print
    "<tr><td><input type='checkbox' name=\"delete[]\" ";

    print
    "value=\"$key\">$/td>";

    print
    "<td>$key</td>";

    print
    "<td> <input type=\"text\" name=\"prices[$key]\" ";

    print
    "value=\"$stat\"> </td></tr>";

    $key = dbmnextkey( $dbh, $key );

    }



    dbmclose( $dbh );

    ?>



    <tr>

    <td>&nbsp;</td>

    <td><input type="text" name="name_add"></td>

    <td><input type="text" name="stats_add"></td>

    </tr>



    <tr>

    <td colspan=3 align="right">

    <input type="submit" value="amend">

    </td>

    </tr>

    </table>

    </form>

    </code>
    </code>
    فكر ميكنم اين سوال براتون پيش بياد كه چه موقع بايد از اين نوع ذخيره داده استفاده كنيم :

    خوب بايد بگم زماني كه داده هاي كمي برا ذخيره كردن داريد ميتونيد از اين روش استفاده كنيد كه خيلي روش ساده اي هست و بدرد بخور .

    اميدوارم لذت برده باشيد .