آموزش قدم به قدم زبان php

LordEfazati

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


توصیه های ما:

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

دوستانی که در این آموزش ها ما را یاری می کنند: V0id, LordEfazati
مدیران هم از این بحث با توجه به قوانین موجود حفاظت لازم را به عمل می آورند.


شرایط استفاده از این تاپیک
- انتقادات به صورت پیام خصوصی ارسال شود
- هیچگونه پاسخی به مطالب داده نشود
- در صورت راضی بودن از ارسال مورد نظر از دکمه "تشکر" استفاده شود
- در صورت علاقه به همکاری در آموزش، ارائه سوال و مثال، درخواست خود را به صورت پیغام خصوصی ارسال کنید


منبع اصلی آموزش ها سایت w3schools
حق تألیف و تصنیف فقط با گروه ایران PHP و هاست پیما می باشد​
 
آخرین ویرایش:

LordEfazati

Member
درس اول – PHP چیست؟
زبان قدرتمندی برای ایجاد صفحات داینامیک و پویا می باشد که به وسیله آن می توانید صفحات وبی ایجاد کنید که قابلیت اتصال به دیتا بیس دارند و کاربر می تواند آنها را مدیریت کنند.
این زبان جزو دسته سمت سرور هست. یعنی دستورات شما به سرور ارسال می شود و در سرور هایی که مجهز به نیازمندی های PHP هست اجرا می شوند و قابل استفاده می شوند.
این زبان با دیتا بیس هایی از قبیل oracle mysql postgre sql و ... هماهنگی دارد و می تواند به راحتی به آن وصل شود.

برای شروع چه باید کرد؟
شما برای برنامه نویسی در این زبان در ویندوز حتما باید سرور مجازی ایجاد کنید تا بتوانید به صورت مجازی این ارتباط را ایجاد کنید.
از این مجموعه برنامه ها می توان به Wamp, Xampp و IIS server اشاره کرد.
و برای edit کردن صفحات PHP هم برنامه Notepade++ را پیشنهاد می کنم که علاوه بر ساپورت php زبان های دیگری را از قبیل html و ... نیز پشتیبانی می کند.

آشنایی اولیه با PHP
این زبان با <?PHP آغاز می شود و با ?> پایان می یابد و سرور هر مطلبی که بین این دو خط باشد را جزئی از کدهای PHP می داند و مشغول به اجرای آن می شود

نمونه
PHP:
<html>
<body>

<?php
echo "Hello World";
?>

</body>
</html>

در این مثال کلمه Hello World را چاپ می کند.

برای نوشتن کامت هایی برای بهتر فهمیدن برنامه در نگاه های بعد، می توانید از //note // یا /*note */ استفاده کنید.
این روش برای استفاده های بعدی بسیار مفید است چون بعد از مدتی به طور کلی از نوشته هاتون دور می شوید :D و نمی تونید بفهمید که چی نوشتید.

پایان درس اول
موفق باشید
افاضاتی
 

Cyletech

Member
چه چیزی نیاز داریم؟

چه چیزی نیاز داریم؟

اگر سرور شما PHP پشتیبانی می کنه دیگه نیازی انجام کاری نیست!

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

حالا اگر سرور شما PHP پشتیبانی نمی کنه باید PHP رو نصب کنید حتما. این هم یک لینک خوب برای نصب PHP 5 : http://www.php.net/manual/en/install.php

دانلود PHP

http://www.php.net/downloads.php

دانلود MySQL database

http://www.mysql.com/downloads/index.html

دانلود Apache server

http://httpd.apache.org/download.cgi
 

Cyletech

Member
متغیر ها در php

متغیر ها در PHP

متغیر های برای اینکه مقادیری مثل رشته های متنی، اعداد یا ارایه هارو ذخیره کنه بوجود اومده. خوبی این متغیر ها اینه که اگر یکبار متغیر معرفی کامل بشه دیگه می تونیم در هر جای برناممون بکار ببریم. یعنی دیگه نیازی نیست مجدد از نو اون متغیر رو تعریف کنیم. تمام متغیر ها با $ که می خونند دالر نیم (Dollar name) شروع میشه.

شکل کلی بدین صورت هست:

PHP:
$var_name = value;

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

خوب حالا بیاید شروع کنیم یک متغیر بنویسیم که حاوی یک رشته متنی باشه و بعد اون رو با استفاده دستور نمایش (echo) نمایش بدیم.

PHP:
<?php

$txt = "Hello World!";
echo $txt;

?>

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

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

- یک متغیر باید با حروف یا یک "_" آندرسکور (underscore) شروع بشه.
- یک متغیر می تونه حاوی کاراکتر های عددی (0 تا 9) یا حروفی (a تا z) البته بزرگ یا کوچیک بودن مسئله نیست!
- یک متغیر هرگز نمیتونه حاوی فاصله (space) باشه!!! اما اگر یک متغیر از دو یا بیشتر کلمه تشکیل شده بود باید با "_" از هم جدا کنید مثل این. $my_moteghayer یا با بزرگ و کوچیک نوشتن مثل این: $myMoteghayer


تمارین


این درس خیلی سبک هست ولی خواهش می کنم چندین مرتبه این درس رو با درس قبلی که دوستمون داد قاطی کنید و چندین متغیر رو با هم نمایش بدید. همچنین خواهش دارم که تمرین هایی که می کنید رو توی یک فایل php پیوست کنید تا ما ببینیم و اشتباهاتتون رو بگیم.
 

Cyletech

Member
متغیر های رشته ای

متغیر های رشته ای در PHP

متغیر های رشته برای مقادیری که حاوی کاراکتر هست استفاده میشه. در این مرحله قصد دارم تا به توابع مشترک و عملگر ها بپردازیم.

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

در زیر ما یک رشته رو در یک متغیر ذخیره کردیم و بعد نمایش دادیم.

PHP:
<?php
$txt="Hello World";
echo $txt;
?>

در زیر هم بصورت مستقیم رشته رو نمایش دادیم.

PHP:
<?php
echo ("Hello World");
?>

در هر دو حالت خروجی ما Hello World خواهد بود.

حالا میریم سر عملگر ها و چند تابع

عملگر الحاقی

عملگر نقطه (".") در خارج از رشته بصورت یک عملگر اتصال دهنده استفاده میشه. یعنی ما مثلا یک متغیر داریم که توش یک رشته ذخیره کردیم که وسطش یک کد PHP هست و باید اجرا بشه و حالا اگر این عملگر الحاقی رو استفاده نکنیم سیستممون با خطا روبرو میشه. به مثال زیر توجه کنید.

PHP:
<?php
$mymother = "Anna";
$txt = "Hello " .$mymother. " . I love you";
echo $txt;
?>

دیدید که چطوری استفاده کردیم! حتما باید اول و آخرش بیاد تا به سیستم بگیم که این دو تا با هم یکی هستند. مطمئنا سوال در این رابطه خیلی هست. پس بپرسید عزیزان من :rose:
خروجی کد بالا بصورت Hello Anna . I love you خواهد بود.


تابع strlen()

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

PHP:
<?php
echo strlen("Hello world!");
?>

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


تابع strpos()

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

PHP:
<?php
echo strpos("Hello world!","world");
?>

خروجی کد بالا 6 خواهد بود. حالا چطور؟ ببینید این تابع (strpos) دو شناسه (آرگومنت) میگیره. اولی رشته و دومی اون چیزی که باید ببینیم چندمین کاراکتر هست. مثلا در کد بالا که نوشتم، من اومدم یک رشته Hello world! رو دادم. خوب در قسمت قبلی دونستیم که این رشته 12 کاراکتر داره (طولش 12 هست). حالا ما اومدیم و در دومین شناسه رشته ی world رو دادیم به تابع. تابع میاد و کل اون رشته رو نگاهی می کنه و اول طول کل رشته رو حدس میزنه بعد جستجو می کنه ببینه آیا این رشته ای که در دومین شناسه دادیم بهش وجود داره یا نه (اگر باشه جواب مثبت میشه (true) اگر نباشه جواب منفی (false) میده). در کد ما که وجود داشت! پس میاد اون رشته اولی رو می خونه و تا رسید به اون رشته که ما دادیم بهش سریع قبلش رو بررسی می کنه و طول رشته رو میده و میگه که مثلا طول این رشته 6 هست. در اصل یادتون باشه این تابع طول رشته رو نمی ده ها!!! این تابع فقط جایگاه رو مشخص می کنه با استفاده از طول رشته!!!

ولی چیزی که جالبه اینه که چرا 6؟ در حقیقت باید 7 باشه جواب ما ها! می دونید چرا؟ خوب الان بهتون توضیح میدم. ببینید برادران و خواهران من، در بیشتر توابع در PHP همیشه از 0 شروع میشه نه از 1!!! حالا وقتی رسیدیم به درس ارایه ها اونجا کاملا مشخص میشه همه چی!

تمارین

دوست دارم در یک کد PHP دو تا رشته با ذخایر متفاوت (اولی: سلام پدر روزت مبارک و دومی: سلام مادر ناهار داریم؟ ) رو نمایش بدیم اول و بعد در زیرش بیایم طول رشته هامون رو نمایش بدیم و بعد هم بیایم و اون فایل تمرینمون رو آپلود کنیم و اینجا قرار بدیم تا همه ببینن! :D
 

Pensive-pith

Active Member
متغیرها

متغیرها


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


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

PHP:
$a;
$a_longish_variable_name;
$sleepyZZZZ

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

PHP:
$num = 8;
$num = 23;

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

PHP:
Print  $num;

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

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

PHP:
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 کار می کنید باید حتما اطراف آن از " و یا ' استفاده شود. DOUBL یک عددی است که ممیز نیز دارد BOOLEAN یا TRUE است و یا .FALSE


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

PHP:
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 در داخل پرانتز و قبل از نام متغیر یک کپی از متغیر با نوع داده جدید بدون تغییر دادن متغیر اصلی ایجاد می کند.
به عنوان مثال :

PHP:
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 آن را چاپ کردیم.
 

Pensive-pith

Active Member
عملگرها


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


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

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


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

PHP:
"hello"." world" 
  returns 
  "hello world"
در PHP یک سری عملگرهای دیگه ای برای مقدار دهی دارد.
+ = عملگری است که با استفاده از آن متغیر با خودش جمع می شود.
مثلا:

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

PHP:
$x = 4; 
  $x -= 4; // $x now equals 1
عملگرهای مقایسه ای
عملگرهای مقایسه ای بر روی متغیرها اعمال می شود و مقایسه می کند و در صورت درست بودن True و در صورت غلط بودن False بر می گرداند.
مثلا:

PHP:
$x < 5

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

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

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

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

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

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


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

True || false true چپ یا راست Trueباشد یا ||
True || false true چپ یا راست Trueباشد یا or
True || false false چپ یا راست Trueباشد ولی هر دو True نباشد Xor xor
true&& false false چپ و راست هر دو Trueباشد و &&
True && false false چپ و راست هر دو Trueباشد و and​
true false ! درست نباشد نه !​


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

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

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

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

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



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

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

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

PHP:
(4+5) * 2
در درسهای قبلی همواره کدها در یک جهت حرکت می کردند. در واقع خط به خط کدهای ما اجرا می شد و جلو می رفت. این روش جایی برای کد نویسی منعطف نمی گذارد.
 
آخرین ویرایش:

Pensive-pith

Active Member
دستورات شرطی.

  • چگونه یک کد را وقتی اجرا کنیم که یک عبارت True باشد . IF CLAUSE


  • چگونه قسمت دیگری از کد اجرا شود وقتی که همان عبارت False شود . ELSE


  • چگونه از دستور switch استفاده کنیم.
اغلب script ها نیاز به تغییر خروجی در شرایط مختلف دارند. با استفاده از IF شما می توانید خروجی کدهای خودتون را در PHP با توجه به یک سری شرایط تغییر دهید.

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

PHP:
if ( expression ) 
  { 
  // code to execute if the expression evaluates to true   
  }
فرمت کلی IF به صورت بالا است. expression عبارتی است که باید کنترل شود . و عبارات بین { و } کدی است که در صورت true بودن عبارت If باید اجرا شود.
:​
PHP:
  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 را در خود دارد یا خبر.
از { و } فقط وقتی استفاده می کنیم که کدهای ما بیشتر از یک خط باشند.
کد بالا رو به صورت زیر نیز می توان نوشت :
:​
PHP:
if ( $mood == "happy" ) 
  print "Hooray, I'm in a good mood";
در این حالت Hooray, I'm in a good mood چاپ می شود. اگر ما متغیر mood رو "sad" قرار دهیم دیگر چیزی چاپ نخواهد شد.

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

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


PHP:
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 می باشد اجرا خواهد شد.
خروجی دستور بالا به صورت:

PHP:
Not happy but sad

خواهد بود.

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

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

PHP:
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 دلخواه است و می تواند در کد وجود نداشته باشد.

PHP:
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 شود.
فرمت کلی به صورت زیر است :

PHP:
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 می رود.
مثال :

PHP:
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 می توانید تابع شرطی ایجاد کنید که در آن عبارتی چک شود و در صورت درست بودن یک سری کد اجرا شود و در صورت اشتباه بودن کد دیگر.

PHP:
( expression )?returned_if_expression_is_true:returned_if_expression_is   
  _false;
اگر عبارت داخل پرانتز ما True بود کد بعد از علامت سوال اجرا می شود و در غیر اینصورت کد بعد از : اجرا خواهد شد.


PHP:
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 را بدهید.
 
آخرین ویرایش:

Pensive-pith

Active Member
تکرار دستورات - حلقه ها


  • چگونه یک قسمت از کد را چند مربطه اجرا کنیم . while


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

  • چگونه یک حلقه FOR را قطع کنیم.


PHP:
while ( expression ) 
  { 
  // do something 
  }
تا وقتی که عبارت whileمنظور همان (expression ) داخل پرانتز جلوی آن است True باشد کد داخل while پشت سر هم اجرا می شود. معمولا شما در داخل حلقه کاری می کنید که عبارت مرتبا تغییر نماید و یک جا False شود در غیر اینصورت حلقه شما تا بینهایت اجرا می شود.
مثال زیر حلقه ای ایجاد می کند و مضارب 2 را نمایش می دهد.

PHP:
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 است فقط سر و ته شده است ! بزرگترین فرق آن این است که ابتدا کدها اجرا می شوند و بعد درستی یا نادرستی عبارت چک می شود.

PHP:
do { 
  // code to be executed   
  } 
  while ( expression );
توجه : آخر عبارت while در خط آخر حتما باید ; گذاشته شود.
این متد وقتی خیلی به درد می خورد که شما بخواهید کد شما حداقل یکبار اجرا شود حتی اگر شرایط عبارت while اتفاق نیافتاده باشد.

PHP:
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 ایجاد می کند.
فرمت کلی به صورت زیر است :

PHP:
for ( variable assignment; test expression; variable increment ) 
  { 
  // code to be executed   
  }
هر عبارت داخل for باید حتما با ; از هم جدا شوند. معمولا ، عبارت اول یک متغیر شمارنده ایجاد می کند ، و در عبارت دوم عبارت کنترلی برای loop است ، و قسمت سوم اضافه کردن و کم نمودن متغیر را ایجاد می کند.
مثال :
PHP:
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
در هر دو روش ایجاد حلقه دستوری برای پایان دادن حلقه وجود دارد. گاهی اوقات نیاز است که وقتی کد به شرایط خاصی رسید حلقه پایان یابد.
مثلا :
PHP:
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 خواهد شد.

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

PHP:
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 این قابلیت رو دارید که در داخل یک حقله یک یا چند حلقه دیگه رو نیز بیارید. ولی باید توجه داشته باشید که هر حلقه ای که در یک حلقه دیگر استفاده می کنید باید در همان حلقه تمام شود.
مثلا :

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> 
  22: </html>
توابع قلب یک کد درست طراحی شده است و باعث می شوند کدها خوانا تر شوند و بتوان دوباره از آنها استفاده نمود. هیچ پروژه بزرگی بدون استفاده از تابع نمی تواند انجام شود.
 

Pensive-pith

Active Member
توابع (Functions)


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


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


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

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

تابع چیست ؟

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

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

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

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

PHP:
some_function( $an_argument, $another_argument );
بسیاری از توابع اطلاعاتی برای شما بر می گرداند در راستای عملی که انجام می دهند. مثلا در صورت درست بودن یا نبودن True یا False بر می گردانند.
ABS() مثلا ، یک عدد را می گیرد و قدر مطلق آن را بر می گرداند.

PHP:
  1: <html> 
  2: <head> 
  3: <title>Listing 6.1</title> 
  4: </head> 
  5: <body> 
  6: <?php 
  7: $num = − 321; 
  8: $newnum = abs( $num ); 
  9: print $newnum; 
  10: // prints "321" 
  11: ?> 
  12: </body> 
  13: </html>
در این مثال ما عدد 321- را به $num دادیم. این مقدار را به تابع abs فرستادیم در آنجا محاسبات لازم انجام شد و جواب برگردانده شد که ما آنرا در داخل $newnum ریختیم و آن را چاپ کردیم. البته ما می توانستیم کد را کمی جمع و جور تر بنویسیم و مستقیما عدد را به abs بدهیم و همانجا چاپ کنیم.

PHP:
print( abs( − 321 ) );
این یک خط کد همان کاری را می کند که در مثال قبل انجام دادیم.
قوانین استفاده از توابعی که خودمان می نویسیم هم به همین شکل است.

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

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

PHP:
  1: <html> 
  2: <head> 
  3: <title>Listing 6.2</title> 
  4: </head> 
  5: <body> 
  6: <?php 
  7: function bighello() 
  8: { 
  9: print "<h1>HELLO!</h1>"; 
  10: } 
  11: bighello(); 
  12: ?> 
  13: </body> 
  14: </html>
در خط 7 کد بالا ما تابع bighello را تعریف کردیم. مشخص است عملیاتی که این تابع انجام می دهد این است که کلمه Hello! را بین کدهای h1 چاپ خواهد نمود. ما تابع bighello را بدون Argument تعریف کردیم ، به همین دلیل داخل پرانتز چیزی ننوشتیم.

PHP:
1: <html> 
  2: <head> 
  3: <title>Listing 6.3</title> 
  4: </head> 
  5: <body> 
  6: <?php 
  7: function printBR( $txt ) 
  8: { 
  9: print ("$txt<br>\n"); 
  10: } 
  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 نیاز داشته باشد ، موقع صدا کردن تابع باید حتما مقدار برای آن بفرستیم.
نکته در صورتیکه تابع را به این صورت تعریف کنید :

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

PHP:
   1: <html> 
  2: <head> 
  3: <title>Listing 6.4</title> 
  4: </head> 
  5: <body> 
  6: <?php 
  7: function addNums( $firstnum, $secondnum; 
  8: { 
  9: $result = $firstnum + $secondnum ) 
  10: return $result; 
  11: } 
  12: print addNums(3,5);   
  13: // will print "8" 
  14: ?> 
  15: </body> 
  16: </html>
کد بالا عدد 8 را در خروجی چاپ می کند. عددهای 3 و 5 در $firstnum and $secondnum ذخیره شدهند و بعد با هم جمع شدند. و جواب آنها در $result ذخیره شد و سپس در خط 10 آن مقدار برگردانده شده است. با دستور Return شما می توانید هر چیزی را برگردانید مثلا :

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

PHP:
return 4;
می توانید نتیجه یک عملیات را برگردانید :

PHP:
return ( $a/$b );
یا حتی مقداری از یک تابع دیگر را برگردانید :

PHP:
return ( another_function( $an_argument ) );

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

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

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

PHP:
   1: <html> 
  2: <head> 
  3: <title>Listing 6.6</title> 
  4: </head> 
  5: <body> 
  6: <?php 
  7: function test() 
  8: { 
  9: $testvariable = "this is a test variable"; 
  10: } 
  11: print "test variable: $testvariable<br>"; 
  12: ?> 
  13: </body> 
  14: </html>
در مثال بالا خروجی چیزی رو چاپ نخواهد نمود. چون $testvariable که در خط 11 برای چاپ خوانده می شود قبلا تعریف نشده است و $testvariable خط 9 فقط در داخل function قابل دسترسی هستند.

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

PHP:
  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: } 
  12: meaningOfLife();   
  13: ?> 
  14: </body> 
  15: </html>
خروجی خالی چاپ می شود و مقدار $life را چاپ نخواهد کرد. در برخی موارد ما نیاز به استفاده از متغیرهای بیرون تابع داخل یک تابع داریم. برای این کار کافیه که از دستور Global استفاده کنیم.
به طور مثال می توانید برای این منظور کد بالا را به صورت زیر بازنویسی کنید :

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

Pensive-pith

Active Member
آرایه ها
آرايه ها در واقع مانند يك ظرف هستن كه ميتونيم چندين مقدار رو توش قرار بديم و سپس از توي ظرف مقاديرمون رو يا مقدار مورد نظرمون رو برداريم ويكي از پركاربرد ترين دستورات در همه زبانها بشمار مياد در ضمن ترتيب آرايه ها از صفر شروع ميشه.
براي مثال :

Array index value
0 Mehdi
1 Asef
2 tsotodeh
3 knowhow
4 Piter1356
بزاريد چندين مقدار رو در يك مقدار ديگر ذخيره كنيم :

PHP:
$users=array("Mehdi","Asef","tsotodeh","knowhow","Piter1356");
در اينجا اگه بخواهيم مقدار Asef رو چاپ كنيم كافيه بنويسيم :

PHP:
Print "$users[1]";
و براي اضافه كردن آرايه جديد ميتونيم از دستور زير استفاده كنيم

PHP:
$users[]="azemati";
و براي صدا كردن فقط انديس يا ايندكسش رو صدا بزنيم .
در ضمن ميتونيم خودمون هم ايندكس گزاري كنيم يعني بجاي 0 – 1- 2 – 3 - .. .. خودمون حروف بزاريم براي مثال به كد زير توجه كنيد :

PHP:
$user = array (name=>"Asef",job=>"Programming",age=>24, 
  "skill"=>"everyThing");
خوب حالا براحتي هركدوم رو كه بخواهيم ميتونيم صدا بزنيم :

PHP:
Print"$user[name]"; 
  Or 
  Print"$user[job]";
همونطور كه ديديد در قسمت تعريف كردن ارايه ها حروف را در داخل گيومه قرار ميديم و قرار دادن اعداد اجباري نيست و هم ميتونن داخل گيومه قرار بگيرن هم نگيرن .
همچنين ميتونيم متغيير هاي داخل ارايمون رو مقدار دهي كنيم براي مثال :

PHP:
$user[name]="azemati"; 
  $user[job]="webmaster";
و براي تعريف كردن چندين آرايه با چندين مقدار به اين صورت عمل ميكنيم :

PHP:
   $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")    );
و براي صدا كردن مقداري خاص به اين شكل عمل ميكنيم :

PHP:
print $user[0][job];   
  //Print "Programming"
براي پي بردن به تعداد مقادير يك آرايه ميتوانيد از دستور
PHP:
Print count($user);
استفاده كنيد . ولي دقت كنيد كه در دستور كانت مقدار ايندكس ما از صفر شروع نميشه بلكه از يك شروع ميشه براي مثال براي دسترسي به مقداري با استفاده از كانت به اين صورت عمل ميكنيم :

PHP:
<?php 
  $users=array("a","b","c","d","e"); 
  print $users[count($users)− 1]; 
  //Print 5 
  ?>
كه در اين كد آخرين مقدار يعني حرف اي را چاپ ميكنه !
آرايه ها را به شكل هاي گوناگوني ميتوان استفاده كرد و كاربرد بسيار زيادي دارند
دستور ديگري كه ميخواهيم آشنا بشيم دستور Array_merge() هستش كه با مثالي آشنا ميشيم :

PHP:
<?php 
  $first = array("a", "b", "c");   
  $second = array(1,2,3);   
  $third = array_merge( $first, $second ); 
  foreach ( $third as $val ) 
  { 
  print "$val<BR>"; 
  } 
  ?>
در اين مثال ايم كد اين متغيير هاي اول و دوم را با هم تركيب ميكنه و در متغيير سوم قرار ميده اما دستور foreach مثل دستور for عمل ميكنه با اين تفاوت كه در اينجا مياد متغيير سوم رو در متغيير جديدي ميزاره و اون رو چاپ ميكنه شكل كلي اين دستور به اين صورت هستش :

PHP:
foreach( $array as $temp ) 
  { 
  //... 
  }
براي مرتب كردن يك آرايه از دستور sort استفاده ميكنيم مانند مثال:

PHP:
<?php 
  $an_array = array("x","a","f","c"); 
  sort( $an_array);   
  foreach ( $an_array as $var ) 
  { 
  print "$var<BR>"; 
  } 
  ?>
بديهي است كه با اعداد هم ميتوانيم همچين كاري رو بكنيم. همونطور كه ديديد با دستور sort(); ميتونيم مقادي يك آرايه رو مرتب كنيم. در مثال بالا در خروجي حروف به صورت مرتب شده نمايش داده ميشوند .
دستور asort(); هم داريم كه بر اساس مقادير آرايه ها انها را مرتب ميكنه باز به مثالي ديگر توجه كنيد :

PHP:
<?php 
  $first = array("first"=>5,"second"=>2,"third"=>1); 
  asort( $first );   
  foreach ( $first as $key => $val ) 
  { 
  print "$key = $val<BR>"; 
  } 
  ?>
كه در خروجي اين چنين چاپ ميشود :
third = 1
second = 2
first = 5
در دستور بالا همونطور كه ديد بر حسب مقادير مرتب شد ولي اگر بخواهيم بر حسب ايندكسي كه ميدهم مرتب بشه ميتونيم از دستور ksort(); استفاده كنيم

PHP:
<?php 
  $first = array("x"=>5,"a"=>2,"f"=>1); 
  ksort( $first );   
  foreach ( $first as $key => $val ) 
  { 
  print "$key = $val<BR>"; 
  } 
  ?>
كه در خروجي چاپ ميكنه
a = 2
f = 1
x = 5
 

Pensive-pith

Active Member
فرم ها - Forms

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

PHP:
#this page name is a.php 
  <form action="b.php" method="get"> 
  <input type="text" name="user"> 
  <input type="submit" name="btn"> 
  </form>
قصد داريم اطلاعات يك تكست باكس رو كه در اين صفحه قرار داره توسط صفحه دوم به اسم b.php بخونيم پس اسم اين صفحه رو كه هيچ كد پي اچ پي توش استفاده نكرديم ميزاريم a.php و ذخيره ميكنيم.
حالا ميرسيم به صفحه دوم اين كد رو تو صفحه دوم قرار بديد .
PHP:
<?php
print "$user"
?>
خيلي ساده و به اين صورت اطلاعات رو ميگيريم يوزر اسم تكست باكسي هست كه تو فرم اول قرار داشت.
بقيه كد ها هم اچ تي ام هست و نيازي به توضيح نيست فقط در مورد get بگم كه اين دستور متغيير ها رو موقع ارسال تو آدرس نشون داده ميشه و شايد بعضي جاها زياد راه مطمئني نباشه ولي اگه بجاي اين عبارت از post استفاده كنيم ديگه در آدرس نشون داده نميشه .
تركيب كردن پي اچ پي با اچ تي ام ال :
به اين كد نگاه كنيد :

PHP:
<form action="<?php print $PHP_SELF?>" method="POST"> 
  name: <input type="text" name="user"> 
  </form>
وقتي اين فرم رو اجرا كنيم فرم همواره خودشو صدا ميزنه چون ما از عبارت $PHP_SELF استفاده كرده ايم توجه كنيد كه ما هيچ دكمه اي رو صفحه قرار نداديم و در بيشتر مرورگرها با زدن كليد اينتر ميتونيم فرم رو اجرا كنيم .
البته در كد بالا هيچ اطلاعاتي رو بيرون نميده ولي در كد زير ميخواهيم يه بازي ساده بنويسيم تا بيشتر متوجه بشيم :

PHP:
<?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"; 
  } 
  ?>
توضيحات : با دستور ! كه آشنا هستيد همون دستور نقض ، اما دستور isset اين دستور چك ميكنه ببينه اصلا اطلاعاتي وارد شده يا نه ما در خط اول چك ميكنيم ببينم (اگه نه اطلاعاتي وارد شده) انگاه پيغام خوش آمد گويي رو پخش كن اين كد موقعي ميتونه اتفاق بيفته كه برا اولين بار صفحه رو باز كرده يا هيچ اطلاعاتي وارد نكرده .
حالا ميرسيم به قسمت اچ تي ام ال اين كد رو زير كد بالايي قرار بديد

PHP:
<h1> 
  <?php print $msg ?> 
  </h1>  
  <form action="<?php print $PHP_SELF?>" method="POST">   
  Guess Number : <input type="text" name="guess">   
  </form>
خوب اين كد نيز اطلاعات رو از كاربر ميگيره و صفحه رو دوباره اجرا ميكنه و پيغام مناسب رو پخش ميكنه .
ميخوايم با يه دستور جديد و كاربردي آشنا بشيم فرض كنيم بعد از اينكه كاربر در بازي بالا برنده شد ميخواهيم او را به يه صفحه جديد بفرستيم يعني ريدايركت كنيم ميتونيم از دستور زير استفاده كنيم اين دستور رو بجاي پيغامي بزاريد كه وقتي كاربر برنده ميشه انتخاب ميشه يعني بعد از else قرار بديد :

PHP:
header("Location: page.html"); 
  exit;
با دستور exit هم از داخل اين كد بيرون ميايم و به صفحه بعد منتقل ميشيم .
نوبتي هم باشه نوبت كار با فايل هاست :

PHP:
<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>
خوب ما با استفاده از دستور enctype="multipart/form-data" درواقع ميايم همون فايل ديالوگ رو باز ميكنيم
در قسمت بعد ما يك متغيير مخفي ايجاد ميكنيم و سايز فايل رو تعيين ميكنيم و توش قرار ميديم كه در اينجا 51200 انتخاب كرديم
حالا با دو خط بعد يه تكست باكس و يه دكمه ميزاريم . ما اينجا به كاربر اجازه ميديم تا 50 كيلوبايت فايل اپلود كنه .
البته كد بالا جنبه نمايش داشت و عملا كاربرد زيادي نداره قبل از اينكه نمونه قابل اجرا رو امتحان كنيم بزاريد ليستي از متغيير هاي فايل اپلود رو براتون بگم
مثال توضيح نام متغيير
/tmp/php3d3ef مسير فايل اپلود شده $fupload
Test.gif اسم فايل اپلود شده $fuploadname
51200 حجم بر حسب بايت $fuploadsize
Image/gif نوع فايل اپلودي $fupload type
حالا مثال ، در اين مثال ما اطلاعات فايل اپلئدي رو نمايش ميديم

PHP:
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>
فكر نميكنم نيازي به توضيح باشه بجز اين خط ( $fupload, "$file_dir/$fupload_name") copy اين دستور فايل مورد نظر رو روي سرور كپي ميكنه و اگه اشكالي پيش اومد عبارت Couldn't copy رو چاپ ميكنه در اينجا ما پس از اينكه از كاربر فايل رو درخواست كرديم اطلاعات مربوط به اون فايل رو نمايش ميديم كه ما در اينجا فرض كرديم كه كاربر يك عكس را اپلود كرده است .
 

Pensive-pith

Active Member
كار با فايلها

  • كار با فايلها در پي اچ پي
پيوست دادن كدهاي ديگر در كد خود مان:
شما ميتونيد يك كد رو در يك فايل ديگر بنويسد و هرجا لازم شد در يك كد ديگر كه در فايل ديگري هم قرار داره اونو صدا بزنيد تابع Include(); اين امكان رو به شما ميده و باعث سهولت و كم حجم شدن صفحات ميشه .
اين تابع فقط به يك آرگومان نياز داره و اون مسير فايل پي اچ پي هست كه ميخوايم به صفحمون پيوند بديم
بزاريد با يك مثال راحتتر بيان كنم : فرض كنيد ما در فايل a.php يك كد داريم كه يك پيغام رو چاپ ميكنه
حالا ما ميخوايم همين دستور در فايل اول رو در فايل b.php بدون نوشتن دوباره دستور و با دستور اينكلود بنويسيم كافيه بنويسيم

PHP:
// file name is b.php 
  <?php 
  include("a.php"); 
  ?> 
  //will Print message in a.php
البته چون در اينجا ما در فايل اولمون يك خط دستور داريم فرقي نميكنه ولي اگه چندين خط و چندين دستور باشه كار مارو خيلي راحت ميكنه چون فقط با يه خط كد ميتونيم همون دستورات رو صدا بزنيم .
حتي ميتونيم يك مقدار رو با دستور اينكلود صدا بزنيم يا دستور اينكلود رو با توجه به يه شرط صدا بزنيم.
يك مثال :

PHP:
  <?php 
  //this file name is a.php   
  $ret=(4+4); 
  return $ret; 
  ?>

PHP:
<?php 
  //this file name is b.php   
  $flag=true; 
  if($flag) { 
  $resualt=include("a.php"); 
  print " The Sum Of (4+4) Is $resualt"; 
  } 
  ?>
همونطور كه ديديد ميتونيم طوري تعريف كنيم كه اگه شرط درست نبود اصلا دستور اينكلود اجرا نشه و در خط بعدي مقدار فايل a.php رو توي يه متغيير ديگه مينوسيسم و چاپ ميكنيم .
خوب بهتر بود قبل از اينكه بقيه آموزش رو بگم اينارو ميدونستيد
حالا ميرسيم به كار با فايل ها :
اولين تابعي كه ميخوايم بررسي كنيم تابع چك كردن وجود يك فايل هست !
به اين مثال توجه كنيد :

PHP:
  <?php 
  if (file_exists("a.php")) 
  print "The File Exists"; 
  ?>
حتي ميتونيد با تابع ديگري بفهميد مسير داده شده يك فايل هست يا يك دايركتوري

PHP:
//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"; 
  ?>
تابع ديگري كه وجود داره توابع is_readable , is_writeable , is_executeable هستن كه چك ميكنن ببينن فايل مورد نظر قابل خواندن و يا نوشتن ويا اجرا شدن هست يا مسير داده شده معتبر هست يا نه و يك مقدار از نوع بولين برميگردونه .
تابع ديگري نيز وجود دارد كه سايز يك فايل رو برميگردونه خيلي ساده:
PHP:
Print filesize("a.php");
اين تابع سايز فايل شما رو برحسب بايت نمايش ميده
تابع ديگري كه ميخوايم بررسي كنيم تابع fileatime(); ميباشد كه آخرين باري كه يك فايل دسترسي پيدا كرد رو به ما بر ميگردونه ما در مثال زير ميخوايم بدونيم فايل a.php در چه تاريخ و زماني براي آخرين بار دسترسي پيدا كرده است :

PHP:
<?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   
  ?>
تابع filemtime(); نيز مشابه fileatime(); هستش با اين تفاوت كه تاريخ و زمان آخرين باري كه فايل ويرايش شد رو برميگردونه . تابع filectime(); نيز وجود داره كه در سيستم هاي يونيك تاريخ تغيير يا ويرايش فايل رو برميگردونه ولي در پلت فرم هاي ديگه تاريخ بوجود آمدن فايل رو برميگردونه
حالا ميرسيم به توابع كاربردي تر :
تابع:
PHP:
touch("file-path.txt");
در صورتي كه فايلي با اين نام وجود نداشته باشد اين فايل رو ايجاد ميكنه ولي اگه وجود داشته باشه كاري نميكنه و فقط تاريخ ويرايش فايل تغيير پيدا ميكنه و فايل از بين نميره
با تابع:
PHP:
unlink("file-path.txt");
ميتونيد يك فايل رو پاك كنيد.
نكته : در سيستم هاي يونيكس براي اينكه يك فايل را پاك يا ويرايش يا دست يابي پيدا كنيم لازم است كه دسترسي به فايل رو داده باشيد .
بازكردن فايل قبل از خواندن و نوشتن :
قبل از اينكه بتونيد يك فايل رو بخونيد يا محتوايش رو عوض كنيد به اين احتياج داريد كه اون فايل رو باز كنيد
شما با اين دستور ميتونيد يك فايل رو براي خواندن آماده كنيد:
PHP:
$f=fopen("file.txt",'r');
و با اين دستور ميتونيد فايل رو براي نوشتن اماده كنيد :
$
PHP:
f=fopen("file.txt",'w');
و براي اضافه كردن اطلاعات به يك فايل بايد از اين دستور استفاده كنيد(Append)
PHP:
$f=fopen("file.txt",'a');
بهتره قبل از اينكه اقدام به ويرايش يا باز كردن يك فايل كنيد اون رو امتحان كنيد ببينيد اجازه باز شدن يا ويرايش شدن رو داره ؟
PHP:
If ($fp=fopen("file.txt",'w')) 
  { 
  // codehaie marboot be viraiesh file   
  }
يا ميتونيد بجاي كد بالا اينگونه عمل كنيد:

PHP:
($fp=fopen("file.txt",'w')) or die("Could Not open file");
اگه دستور فوق مقدار درست رو برگردونه پيغام Could Not open file نشون داده نميشه در غير اينصورت نشون داده ميشه .
همون طور كه متوجه شديد هر عملياتي كه بخوايم بر سر فايل اجرا كنيم بايد داخل :
PHP:
Fopen();
  
// Code
  Fclose();
انجام بديم.
پي اچ پي امكانات زيادي رو براي خوندن يك فايل در اختيار ما ميزاره بعنوان مثال شما ميونيد يك فايل رو برحسب بايت يا برحسب لاين يا برحسب كاراكتر بخونيد .
بزاريد ابتدا يك مثال رو نگاه كنيم و بعد توضيحات مربوطه رو بخونيم :

PHP:
<?php 
  $filename = "test.txt"; 
  $fp = fopen( $filename, "r" ) or die("Couldn't open $filename"); 
  while ( ! feof( $fp ) )   
   { 
   $line = fgets( $fp, 1024 ); 
   print "$line<br>"; 
   } 
   ?>
با استفاده از دستور feof(); چك ميكنيم ببينم به آخر فايل رسيديم يا نه و اگه نه ميايم خط به خط با دستور وايل خط هاي فايل رو داخل يك متغيير ميريزيم و اونها رو چاپ ميكنيم . دستور fgets($fp,1024) اينكارو ميكنه و ميگه كه طول هر خط ميتونه تا 1024 بايت باشه.
ما ميتونيم مقدار خاصي از فايلمون رو بخونيم مثلا 16 بايت يا 16 كاراكتر از فايلمون رو بخونيم

PHP:
 <?php 
  $filename = "test.txt"; 
  $fp = fopen( $filename, "r" ) or die("Couldn't open $filename"); 
  while ( ! feof( $fp ) )   
  { 
  $chunk = fread( $fp, 16 ); 
  print "$chunk<br>"; 
  } 
  ?>
همونطور كه ديديد با دستور fread( $fp, 16 ); ما 16 كاراكتر از فايلمون رو ميخونيم .
شما ميتونيد با تابع fseek() جاي مشخصي از فايل رو بخونيد به مثال زير نگاه كنيد:

PHP:
<?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; 
  ?>
در كد بالا ما نيمه دوم يك فايل رو چاپ ميكنيم همه چيز واضح و روشن هست ونيازي به توضيح نيست.
دستور fgetc(); مثل دستور fgets() ميباشد كه اگه در كد بالا كه خط به خط يك فايل رو اجرا ميكرد بزاريد كاراكتر به كاراكتر فايل رو نشون ميده .
براي نوشتن يا اضافه كردن مقدار به يك فايل بايد ابتدا فايل رو بصورت
PHP:
Foper("file.txt",'w');
Or
Fopen("file.txt",'a');
شما ميتونيد با تابع fwrite(); داخل يك فايل مقداري رو قرار بديد ، دقت كنيد كه در اينصورت محتواي فايل قبلي پاك ميشه و ميتونيد با تابع fputs(); يك مقدار رو به فايل مورد نظر اضافه كنيد .
كار كردن با اين دستورها ساده هست با اين حال يك مثال ميارم :

PHP:
  <?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 );   
   ?>
حال ميرسيم به تابع تعيين دسترسي فايل شما ميتونيد با دستور flock(); براي يك فايل دسترسي هاي متفاوتي رو اعمال كنيد ليست شماره دسترسي ها به اين صورت است

PHP:
1    ----  اجازه خواندن ميده ولي نوشتن خيرàSharing   
  2    ----  اجازه خواندن و نوشتن نميدهد àExclusive  
  3    ----  دسترسي هاي بالا را ازاد ميكندàRelease
نوبتي هم باشه نوبت كار با پوشه هاست :
شما ميتونيد با دستور mkdir() , rmdir() پوشه اي ايجاد يا پاك كنيد
توابع ساده اي هستن و نيازي به مثال نيست
يك مثال براي بيشتر آشنا شدن با اين نوع توابع ، ميخوايم فايل هاي داخل يك پوشه رو نمايش بديم

PHP:
  <?php 
  $dirname = "testdir"; 
  $dh = opendir( $dirname ); 
  while ( gettype( $file = readdir( $dh )) != boolean ) 
  { 
  if ( is_dir( "$dirname/$file" ) ) 
  print "(D)"; 
  print "$file<br>"; 
  } 
  closedir( $dh );   
  ?>
ما با دستور opendir() پوشه مورد نظرمون رو در ابتدا باز ميكنيم
سپس با دستور وايل مسير فايلهامون رو ميگيريم و چك ميكنيم اگه متعلق به اين دايركتوري بودن عبارت (D) و سپس اسم فايل و مسيرش رو چاپ ميكنيم
در نهايت با دستور closedir() ميبنديم .
دستور readdir مقدار درست يا نادرست رو برميگردونه و اين بر حسب اين هست كه هر عددي بجز صفر مقدارش ترو ميشه بزاريد با مثالي توضيج بدم فرض كنيم ما چهار تا فايل داريم كه بر حسب ايندكس ما ميايم اينارو داخل وايل چك ميكنيم و تا زماني كه ايندكس صفر نشده شرط وايل ما درست هست و ادامه ميده و هنگامي كه صفر شد از وايل خارج ميشه .
 

جدیدترین ارسال ها

بالا