آموزش PHP جلسه هشتم: دستورات مقدماتی زبان 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 = 'bithub.ir';
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 Bithub.IR' ?>

 

مانند زبان 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) که توسط این تگ میتوانید عبارتی را در صفحه، چاپ کنید:

<?= 'bithub.ir' ?>
دستور بالا، معادل دستور <?php echo 'bithub.ir' ?> میباشد.
نکته: این تگ هیچ ارتباطی با فعال یا غیر فعال بودن 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.
?>

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

مطالب سایت را بدون ذکر منبع (http://bithub.ir) در جایی منتشر نکنید. با تیشکر.


مطالب مرتبط

برای ارسال نظر، باید عضو سایت شوید.