به اطمینان می توان گفت که پی اچ پی پرکاربردترین زبان برای برنامه های تحت وب می باشد، طبق نموداری که سرویس wappalyzer از میزان استفاده از زبان های برنامه نویسی در سایت ها ارائه می دهد،چیزی نزدیک ۹۰٪ محتوای اینترنت با استفاده از پی اچ پی ایجاد می شود. پی اچ پی زبانی بسیار ساده برای یادگیری است، کافی است شما اصول اولیه برنامه نویسی را بلد باشید، دیگر می توانید خود را یک برنامه نویس پی اچ پی معرفی کنید، البته دقت داشته باشید برای حرفه ای شدن می بایست زحمات زیادی بکشید.
این نوشته آشنایی است بر استفاده از زبان پی اچ پی و چگونگی کار زبان های برنامه نویسی تحت، لازم به ذکر است که در این مقاله مثال های بکار برده شده و توضیحات داده شده کاملا علمی نبوده و تنها برای فهم بهتر خواننده ارائه می شوند لذا به صحت مثال ها و توضیحات مشکوک باشید و در صورت خواست بدنبال توضیح صحیح بگردید زیرا اینجا تنها هدف درک کلیات است و نه شرح جزئیات.

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

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

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

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

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

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

پی اچ پی

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

ساختار زبان پی اچ پی

متغییر ها

همانطور که گفته شد متغییر ها در پی اچ پی نیاز به تعریف اولیه برای استفاده ندارند و هر کجای برنامه نیاز به متغییر جدید داشتیم می توانیم بدوت تعریف قبلی از آن استفاده کنید. نکته اصلی در مورد متغییر ها در پی اچ پی این است که تمامی متغییر ها می بایست با کاراکتر $ شروع شوند، هر عبارتی که با این علامت شروع شود یک متغییر محسوب می شود و در صورتی که این علامت جا انداخته شود کامپایلر عبارت را بصورت یک متغیر تشخیص نخواهد داد. استاندارد نام گذاری متغییر های نیز همانند استاندارد نام گذاری در زبان سی می باشد یعنی اگر نام متغییری چند بخشی باشد بخش های آن با زیر خط underline از هم جدا می شوند. البته رعایت این قائده الزامی نیست و می توانید بصورت دلخواه عمل کنید.مثال های از متغییر های ```

$an_int = 12;
$a_double= 3.14;
$a_bool = true;
$a_string = "This is a String";
$another_string = 'This is a string too';

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

<h4>آرایه ها</h4>
آرایه های در پی اچ پی چیزی فراتر از یک سیستم اندیس دهی به یک سری داده هستند، آرایه ها در پی اچ پی علاوه بر مقدار دارای یک کلید دسترسی نیز هستند.

$an_array = array ( 'key' => 'value',
'key2' = > 'value2',
4 => 'value3'
);

$array_one = array ( 'value 1' , 123, 3.14, 'value 4');

$other_array [] = 'initial value';
$other_array['key5'] = 'value for key5';
$other_array[5] = 'value for 5';


<h4>حلقه ها</h4>
حلقه ها در پی اچ پی همانند زبان سی و جاوا است به اضافه یک حلقه خاص برای گردش بین کلید ها و مقادیر آرایه ها در این زبان.
حلقه for

for( $i =0; $i< 10; $i++ ) {
// do something
}

حلقه while

while($i < 10) {
// do something

$i++;
}

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

// method 1
foreach( $array as $key => $value) {
// do something
}
// method 2
foreach( $array as $value ) {
// do something
}


<h4>دستورات شرطی</h4>
دستور شرطی if نیز در پی اچ همانند جاوا و سی است.

if ( $value == 'something') {
// something
} else if ($value == "something else" ) {
// something else
} else {
// neither
}

همچنین پی اچ پی نیز مانند زبان سی و جاوا و اکثر زبان ها عبارت شرطی دیگر و تکی دارد که از آن بیشتر در عبارات ریاضی یا مقدار بازگشتی استفاده می شود. در مثال زیر در صورتی که عدد ```
$an_int
``` مثبت باشد متغیر مقدار ```
true
```  و در غیر این صورت مقدار ```
false
``` می گیرد.

$an_int = -32;
$is_positive = ($an_int > 0) ? true : false;

کد معادل دستور فوق بصورت زیر است:

$an_int = -32;
if($an_int > 0)
$is_positive = true;
else
$is_positive = false;

دستور `switch-case` نیز همانند دیگر زبان ها می باشد.

switch($an_int) {
case 1:
// do something
break;
case 4:
// do something else
break;
default:
// do default
break;
}


<h4>تعریف توابع</h4>
تابع ها در پی اچ پی کمی با توابع در دیگر زبان ها متفاوت است، در پی اچ پی در تعریف توابع نوع بازگشتی تعریف نمی شود و توابع بسته به دلخواه برنامه نویس مس توانند مقدار بازگشت داشته باشند یا نداشته باشند. توابع با کلمه کلیدی ```
function
``` تعریف می شوند، ورودی های تابع نیز تنها با یک نام معرفی می شوند، زیرا همانطور که گفتیم در پی اچ پی نوع متغیر مطرح نیست.

function test_function($arg0, $arg1) {
// do something
}

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

<backquote style=" font-weight: bold; font-size: 18px; font-family: inherit; line-height: 25px;">در پی اچ پی این امکان وجود دارد که برای ورودی های تابع یک مقدار پیش فرض نسبت داده شود تا در صورت وارد نشده آن ورودی هنگام فراخوانی مقدار پیش فرض در نظر گرفته شود.</backquote>

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

function test_function2($arg0, $arg1 = "default") {
// do something
}


<h4>عملگرها</h4>

$a = 12;
$b = 4;
$c = -3;
$is_a = true;
$is_b = false;

$string_a = "hello";
$string_b = " user";

// string Concatenation (ادغام رشته ها)
$string_c = $string_a.$string_b; // $string_c = "hello user"
$string_d = $string_a.$a; // $string_d = "hello12";

$d = $a + $b ; // addition
$d = $a - $b; // subtraction
$d = $a * $b; // multiplication
$d = $a / $b; // division
$d = $a % $b; // Modulus (باقی مانده تقسیم $a بر $b)

$a += $b; // $a = $a + $b;
$a -= $b; // $a = $a - $b;
$a *= $b; // $a = $a * $b;
$a /= $b; // $a = $a / $b;
$a %= $b; // $a = $a % $b;

$a ++; // $a = $a + 1;
$a --; // $a = $a - 1;


<h4>عملگرهای شرطی</h4>

// and
if( $is_a && $is_b) {}
// or
if($is_a || $is_b) {}
// not
if( ! $is_a) {}
// equal (مساوی)
if($a == $b) {}
// not equal (نامساوی)
if ($a != $b) {}
// greater than (بزرگتر)
if ($a > $b) {}
// less than (کوچکتر)
if ($a < $b) {}
// greater than or equal (بزرگتر یا مساوی)
if ($a >= $b) {}
// less than or equal (کوچکتر یا مساوی)
if ($a <= $b) {}

برای مطالعه بیشتر در مورد عملگر ها به منبع دوم یعنی `w3schools.com` مراحعه کنید.

<backquote style=" font-weight: bold; font-size: 18px; font-family: inherit; line-height: 25px;">در پی اچ پی عدد صفر مترادف با مقدار ```
false
``` و بقیه اعداد مترادف با مقدار ```
true
``` می باشند.
</backguote>