💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۰ محسن موحد
دستورات مقدماتی زبان PHP (مقاله)
جامعه پی اچ پی ایجاد شده در ۳۰ آذر ۱۳۹۸

در این جلسه قرار است، برنامه نویسی PHP را با مقدمات این زبان شروع کنیم.
البته قرار بود قبل از این جلسه، دو قسمت دیگر، در مورد PHP Handlers و دسترسی از راه دور به آپاچی را توضیح دهم که بخاطر ضروری نبودن این موضوعات و شاید گنگ شدن، در وقت مناسبتری، قرار خواهم داد.

برای شروع کار و تست اسکریپتهایی که مینویسیم، پوشه ای بنام session-1 در شاخه ی www ایجاد میکنیم و فایل index.php را میسازیم.
فایل index.php را باز کنید.
همانطور که قبلا گفتیم، مفسر بلاک‌های PHP را تفسیر میکند و بلاک‌های PHP با تگ <?php شروع میشود و با تگ ?> به پایان میرسد. در نتیجه کدهای PHP در بین تگ باز و بسته ی PHP قرار میگیرند.

همانطور که در مقاله ی اول توضیح دادیم، از کدهای PHP و HTML میتوان در کنار هم استفاده کرد و کدهارا در درون یکدیگر تعبیه کرد.
اولین مثال رو در صفحه ی index.php مینویسیم:

<html>
<head>
    <title>Session 1</title>
</head>
<body>
    <?php echo '<p>Hello World</p>'; ?> 
</body>
</html>

حالا در مرورگر آدرس localhost/session-1 را وارد کنید.

 

همانطور که در مقاله ی اول توضیح دادیم، هر چیزی خارج از بلاک PHP بیاید، مفسر آن را نادیده میگیرد و به مرورگر ارسال میشود. در نتیجه مرورگر آنرا نشان خواهد داد.

نتیجه ی کد بالا به شکل زیر است:

<html>
<head>
    <title>Session 1</title>
</head>
<body>
    <p>Hello World</p> 
</body>
</html>

سؤال: داخل مرورگر ctrl + u میزنم تا سورس صفحه را ببینم. چرا کدهای PHP در سورس وجود ندارد؟
پاسخ: در مقاله ی اول توضیح دادم، کدهای PHP روی سرور اجرا میشوند و خروجی تولید شده را به مرورگر ارسال میشود، بنابراین فقط خروجی HTML برای مرورگر ارسال میشود.

PHP این اجازه را به شما میدهد تا از تگ‌های کوتاه <? و ?> بهره ببرید. برای اینکار باید در تنظیماتphp.ini وارد شوید و Short Open Tag را فعال کنید.

<?
$site = '7learn.com';
echo 'Welcome to ' . $site;
?>

برای باز کردن فایل php.ini روی آیکون WampServer کلیک کنید و از مسیر PHP > php.ini این فایل را باز کنید.
عبارت short_open_tag = Off را پیدا کرده و مقدار آنرا به On تغییر دهید: short_open_tag = On

البته بهتر است از <?php استفاده کنید. ممکن است در یک هاستینگ، قابلیت Short Open Tag، غیر فعال باشد.

بعد از ویرایش فایل php.ini، باید Apache را restart کنید.

 

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

<?php
$a = 1;
$b = 2;
echo $a + $b;

همانطور که در مثال میبینید، تگ پایانی ?> را حذف کردم.
علت: با حذف تگ پایانی، اگر whitespace ای در انتهای فایل وجود داشته باشد، نادیده گرفته میشود در نتیجه زمانی که این فایل را در فایل‌های دیگر PHP اینکلود میکنید، این whitespace‌های ناخواسته به خروجی شما اضافه نخواهد شد و همچنین مشکلی از بابت افزودن header نخواهید داشت.

با توجه به توصیه ی PSR-2، در فایل هایی که فقط PHP نوشته اید، تگ پایانی ?> باید حذف شود.

PSR مخفف PHP Standard Recommendation میباشد.

 

در PHP تگ‌های دیگری مانند تگ‌های ASP <% %> و <%= و همچنین تگ اسکریپت <script language="php"> وجود داشته که در PHP 7 حذف شده اند.

برای چاپ یک عبارت، میتوانید از دستور echo استفاده کنید:

<?php echo 'Welcome to 7learn.com' ?>

مانند زبان C، انتهای هر دستور العمل میبایست علامت سمی کالن ; را گذاشت.
البته تگ پایانی ?> بصورت اتومات، برای آخرین خط، semicolon در نظر میگیرد و گذاشتن ; در خط آخر(قبل از تگ پایانی) اختیاری است.

<?php
    echo "1";
    echo "2"
?>

همانطور که در کد بالا میبینید، انتهای دستور echo "2"  علامت semicolon نیامده و اسکریپت بدون هیچ خطایی، اجرا خواهد شد.
علت: وجود ?> بعد از این دستور، میباشد.
حالا اسکریپت زیر را اجرا بگیرید:

<?php
    echo "1";
    echo "2"

پس از اجرای اسکریپت بالا، خطای Parse error: syntax error, unexpected end of file, expecting ',' or ';' in C:\wamp64\www\session-1\index.php on line 3 اتفاق می‌افتد.
علت: parser میبیند بعد از دستور echo "2" علامت semicolon وجود ندارد و بعد از آن، تگ پایانی ?> هم وجود ندارد. در نتیجه، خطا اتفاق می‌افتد.

همچنین whitespace‌ها در بلاک‌های PHP، نادیده گرفته میشود:

<?php
echo 'Ok' ?>
<?php
       echo 'Ok'
?>
<?php
echo 'Ok'
?>

دستورات بالا، تفاوتی در اجرا نخواهند داشت.

 

در PHP تگ <?= وجود دارد(اصطلاحاً short echo tag) که توسط این تگ میتوانید عبارتی را در صفحه، چاپ کنید:

<?= '7learn.com' ?>

دستور بالا، معادل دستور <?php echo '7learn.com' ?> میباشد.
نکته: این تگ هیچ ارتباطی با فعال یا غیر فعال بودن short_open_tag ندارد و همیشه در دسترس است.
نکته: short echo tag از PHP 5.4 اضافه شده است.

 

کامنتها:
PHP از سه روش، زبان C و C++ و Shell پشتیبانی میکند:

/* C style */
// C++ style
# Shell style

اگر میخواهید توضیحاتی در مورد یک خط یا یک بلاک از کد بنویسید، میتوانید از comment استفاده کنید:

<?php
    echo 'This is a test'; // This is a one-line c++ style comment
    /* This is a multi line comment
       yet another line of comment */
    echo 'This is yet another test';
    echo 'One Final Test'; # This is a one-line shell-style comment
?>

همچنین اگر میخواهید دستور یا چندین خط از دستورات، در برنامه اجرا نشوند، میتوانید آنها را comment کنید:

<h1>This is an <?php # echo 'simple';?> example</h1>
<?php
$a = 1;
//$b = 2;
$b = 3;
echo $a + $b;

توجه داشته باشید، اگر از C-Style استفاده میکنید، کامنت به محض مواجه شدن با اولین */ به پایان میرسد.
برای درک این موضوع به مثال زیر توجه کنید:

<?php
 /*
    echo 'This is a test'; /* This comment will cause a problem */
 */
?>

اگر این اسکریپت را اجرا بگیرید، با خطا مواجه میشوید. علت اینست، با توجه به توضیحاتی که گفته شد، کامنت در این قسمت /* echo 'This is a test'; /* This comment will cause a problem */ با اولین */ مواجه شده است، و به پایان میرسد. در نتیجه */ آخر(قبل از close tag) اضافی است و باید حذف شود.

در پایان این جلسه، چند نمونه از کامنت‌های مختلف ببینید:

<?php
//======================================================================
// CATEGORY LARGE FONT
//======================================================================
//-----------------------------------------------------
// Sub-Category Smaller Font
//-----------------------------------------------------
/* Title Here Notice the First Letters are Capitalized */
# Option 1
# Option 2
# Option 3
/*
* This is a detailed explanation
* of something that should require
* several paragraphs of information.
*/
// This is a single line quote.
?>

همچنین برای کسب اطلاعات بیشتر میتوانید، سایت مرجع را مطالعه کنید.