سرفصل‌های آموزشی
آموزش PHP
ادغام کدهای HTML با PHP

ادغام کدهای HTML با PHP

پیش از این گفتیم که یکی از مزیت‌های زبان برنامه‌نویسی PHP این است که می‌توان به سادگی آن را با کدهای HTML ادغام کرد. در واقع، نرم‌افزار وب‌ سرور هر چیزی که مابین تگ‌های php?> و <? باشد را به عنوان اسکریپت‌های PHP تلقی کرده و مفسر این زبان شروع به تفسیر و پردازش آنها می‌کند و هر کدی که خارج از این تگ‌ها قرار گرفته باشد، به عنوان کدهای HTML برای مرورگر ارسال می‌گردد.

آشنایی با پسوندهای php ،.html. و phtml.

به طور کلی، برای طراحی صفحات معمولی وب‌سایت از پسوند html. برای فایل‌ها استفاده می‌شود اما اگر بخواهیم به وب سرور بفهمانیم که با صفحاتی دینامیک سروکار دارد، علاوه بر استفادهٔ درست از تگ‌های php?> و <? می‌بایست از پسوند php. نیز استفاده کرد.

    هشدار 
اگر فایل مد نظر به پسوند php. ختم نشود، هرگز در لوکال‌هاست پردازش نخواهد شد و مسلماً اسکریپت‌های پی‌اچ‌پی هم تفسیر نخواهند شد.

در ارتباط با تفاوت پسوندهای php. و phtml. بایستی گفت که پسوند phtml. از ترکیب پسوندهای html. و php. ساخته شده و اساساً فرق چندانی با یکدیگر نمی‌کنند جز اینکه صفحاتی که با پسوند php. ذخیره شوند صرفاً حاوی کدهای زبان برنامه‌نویسی پی‌اچ‌پی هستند اما صفحاتی که دارای پسوند phtml. می‌باشند، صفحاتی هستند که عموماً دارای کدهای اچ‌تی‌ام‌ال می‌باشند و در خلال آنها هم یکسری کدهای پی‌اچ‌پی وجود دارد (لازم به ذکر است که در این دوره، تا حد ممکن از پسوند php. استفاده خواهد شد).

    هشدار 
از آنجا که فایل‌های php. این سیگنال را به وب سرور می‌دهند که محتوایشان دینامیک است، لذا این فایل‌ها حتماً می‌بایست از طریق لوکال‌هاست باز شوند و به طور مثال چنانچه مسیر فایل چیزی همچون \:C در سیستم‌عامل ویندوز باشد، فایل‌ هرگز اجرا نخواهد شد.

آشنایی با انواع تگ‌های آغازین و پایانی PHP

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

نوع

تگ پایانی

تگ آغازین

وضعیت

استاندارد

<?

php?>

تگ استاندارد با دستور echo

<?

=?>

تگ کوتاه شده

<?

?>

به سَبک ASP.NET

<%

%>

مواردی که تیک خورده‌اند را مجاز به استفاده هستیم و آنهایی که ضربدر دارند، اصطلاحاً Deprecated هستند؛ به عبارت دیگر، منقضی شده و مجاز به استفاده از آنها نمی‌باشیم.

حال با این توضیحات، فایلی می‌سازیم تحت عنوان index.php و کدهای زیر را داخل آن می‌نویسیم:

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">

    <title>SokanAcademy PHP Course</title>
</head>

<body>
    <?php echo "In The Name of The Most High"; ?>
</body>

</html>

پیش از تفسیر کدهای فوق، همان‌طور که در آموزش‌های گذشته توضیح داده شد، این فایل را از طریق لوکال هاست در مرورگر باز می‌کنیم. آنچه مسلم است اینکه خروجی این فایل در مرورگر دقیقاً شبیه به یک فایل HTML ساده است اما واقعیت امر آن است که بخشی از این فایل -هر آنچه که مابین تگ‌های php?> و <? قرار گرفته است- توسط مفسر زبان PHP پردازش شده، در اختیار وب سرور آپاچی قرار گرفته و آپاچی هم خروجی را در قالب فرمت HTML در اختیار مرورگر می‌دهد و همین می‌شود که ما فکر می‌کنیم با یک فایل HTML سروکار داریم.

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

در تفسیر کدهای فوق، بایستی بگوییم که در خط اول اصطلاحاً Document Type آمده است؛ این تایپ حاکی از آن است که مرورگر با یک فایلی که توسط نسخهٔ ۵ زبان HTML طراحی شده است روبه‌رو می‌باشد و از این پس کلیهٔ قابلیت‌های نسخهٔ ۵ زبان HTML ساپورت خواهند شد.

می تونی خیلی آسون با "دوره پروژه محور HTML و HTML5" وارد دنیای برنامه نویسی وب بشی!

سپس همان‌طور که پیش از این توضیح داده شد، برای آنکه بخواهیم کلیهٔ کاراکترهای زبان فارسی به درستی در صفحه نمایش داده شوند، می‌بایست از اِنکودینگ UTF-8 استفاده کنیم و برای این منظور، از تگ خاصی در بخش هِد سایت استفاده کرده‌ایم (لازم به ذکر است که این تگ در بخش هِد می‌بایست در بالاترین جایگاه قرار گیرد تا عنوان در نظر گرفته شده داخل تگ‌های <title></title> هم به درستی نمایش داده شود).

حال همان‌طور که می‌بینیم، در بین تگ‌ آغازین <body> و تگ پایانی <body/>، تگ‌های php?> و <? را نوشته و داخل آنها از دستور echo که در زبان PHP مسئول پرینت کردن یک عبارت است استفاده کرده‌ایم. در واقع، کاری که echo انجام می‌دهد این است که عبارت In The Name of The Most High را چاپ می‌کند.

پیش از این گفتیم که تگ =?> همان تگ استاندارد PHP است با این تفاوت که دستور echo نیز داخل آن گنجانده شده است. برای درک بهتر این موضوع، کد فوق را به صورت زیر ریفکتور می‌کنیم:

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">

    <title>SokanAcademy PHP Course</title>
</head>

<body>
    <?= "In The Name of The Most High"; ?>
</body>

</html>

می‌بینیم که با تغییر تگ آغازین، دیگر نیازی به تایپ کردن دستور echo نیست و به نوعی می‌توان گفت که کد تمیزتر می‌گردد (معمولاً از این تگ در تِمپلیت‌ها که برخی از آنها داری پسوند phtml. هستند استفاده می‌شود به طوری که نیاز است تا در میان کدهای HTML،‌ بارها و بارها کدهای مختلف PHP جایگذاری شوند).

    نکته

لازم به ذکر است که در فایل php.ini می‌توان امکان استفاده از تگ‌های کوتاهٔ شدهٔ ?> و <? را فراهم ساخت بدین صورت که مقدار کامند short_open_tag را برابر با On قرار داد اما این کار اصلاً توصیه نمی‌شود.

آشنایی با دستورات echo و print

برخی دستور echo -و همچنین print که کاری مشابه echo انجام می‌دهد- را فانکشن (تابع) می‌نامند اما این در حالی است که این یک غلط مصطلح است و چنین دستورات اصطلاحاً Language Construct نامیده می‌شوند (در انتهای این آموزش بیشتر در این باره بحث خواهد شد).

به طور کلی، برای echo و print هم می‌توان از Single Quotation Mark و هم Double Quotation Mark استفاده نمود. به عبارت دیگر، هرآنچه که بخواهیم چاپ شود را هم می‌توانیم مابین علائم ' ' و هم مابین علائم " " قرار دهیم. به طور کلی، می‌توان کارکرد این علائم را مشابه یکدیگر در نظر گرفت اما در شرایط خاصی هم شاهد نتایج کاملاً غیرمنتظره‌ای خواهیم بود که در ادامه بیشتر پیرامون این موضوع بحث خواهیم کرد.

همان‌طور که در اسکریپت فوق مشخص است، اولین علامت " به منظور نقطهٔ آغازین و دومین علامت " به منزلهٔ نقطهٔ پایانی جایی است که از مفسر پی‌اچ‌پی می‌خواهیم برایمان چاپ کند. در پایان هم یک علامت به اصطلاح Semicolon (نقطه‌ ویرگول) یا همان علامت ; را قرار داده‌ایم که در زبان پی‌اچ‌پی به منزلهٔ پایان هر Statement (دستور) است.

    به خاطر داشته باشید
نکته‌ای که در اینجا حائز اهمیت است این می‌باشد که در زبان PHP اگر صرفاً بخواهیم یک کامند (دستور) داشته باشیم و پس از آن هیچ کامند دیگری نیاید، می‌توان Semicolon را نگذاشت اما به عنوان یک Best Practice، شدیداً توصیه می‌شود که علامت ; در پایان تمامی خطوط کد گذاشته شود.

گاهی‌اوقات پیش می‌آید که می‌خواهیم مثلاً نقل‌قولی از فردی مشهور را چاپ کنیم و می‌دانیم که معمولاً نقل‌قول‌ها مابین علائم " " آورده می‌شوند تا مخاطب متوجه شود که جملهٔ مد نظر منصوب به شخص دیگری است و یا به عنوان مثالی دیگر، گاهی از علامت ' برای خلاصه‌نویسی زبان انگلیسی استفاده می‌شود (مثلاً به جای اینکه بنویسیم I am، می‌نویسیم I'm). حال برای روشن‌تر شدن این مثال‌ها، کد زیر را در نظر می‌گیریم:

echo "I asked "What is your name?"";

و یا به عنوان مثالی دیگر، می‌توان کد زیر را در نظر گرفت:

echo 'I'm Behzad Moradi';

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

This page isn’t working
localhost is currently unable to handle this request.
HTTP ERROR 500

پیش از این با مفهوم Status Code در پروتکل HTTP آشنا شدیم و دیدیم که کد وضعیت 500 حاکی از وجود خطایی در سمت سرور است. این پیامی است که مرورگر در اختیار ما قرار می‌دهد و این در حالی است که گاهی‌اوقات نیاز داریم تا جزئیات بیشتری از باگ به وجود آمده در معرض دیدمان قرار گیرد تا سریع‌تر بتوانیم برنامه‌ٔ خود را دیباگ کنیم. برای این منظور، می‌توانیم به فایل error.log وب سرور آپاچی که قبلاً با آن آشنا شدیم مراجعه کنیم:

$ gedit /var/log/apache2/error.log

ترمینال را باز کرده و دستور فوق را وارد می‌کنیم (البته به جای نرم‌افزار ویرایشگر متن gedit می‌توان از سایر نرم‌افزارها همچون nano ،vim و غیر هم استفاده کرد). ارورها در این فایل، به ترتیب تاریخی که رخ داده‌اند نمایش داده می‌شوند؛ لذا می‌بایست به انتهای این فایل مراجعه کنیم و خواهیم دید که اروری به صورت زیر درج شده است:

 PHP Parse error:  syntax error, unexpected 'm' (T_STRING), expecting ',' or ';' in /var/www/sokanacademy-php-course/index.php on line 2

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

echo 'I'm Behzad Moradi';

در واقع، مفسر پی‌اچ‌پی به اولین علامت ' می‌رسد و متوجه می‌شود که باید هر‌ آنچه که پس از این علامت قرار گرفته را چاپ کند و پس از آنکه به علامت ' در I'm می‌رسد، فکر می‌کند که به نقطهٔ پایانی رسیده است! و همان‌طور که در ارور فوق می‌بینیم، به ما پیشنهاد می‌شود که یک علامت ; به جای حرف m قرار دهیم تا ارور مرتفع گردد.

در چنین مواقعی، دو راه‌کار مختلف پیش‌ روی ما قرار داد. راه‌کار اول بدین شکل است که اگر در عبارت (استرینگ) مد نظر که قصد چاپ کردن آن را داریم علامت " وجود داشت (همچون مثال اول)، از علامت‌های ' ' به عنوان نقاط آغازین و پایانی استفاده کنیم و اگر در استرینگ مد نظر علامت ' وجود داشت (همچون مثال دوم) از علائم " " به عنوان نقاط آغازین و پایانی استفاده کنیم. به عبارت دیگر، خواهیم داشت:

echo 'I asked "What is your name?"';
echo "I'm Behzad Moradi";

به عنوان خروجی دستورات فوق هم داریم:

I asked "What is your name?"

و

I'm Behzad Moradi

آشنایی با مفهوم Escaping در برنامه‌نویسی

به عنوان راه‌کار دوم، می‌بایست با چیزی تحت عنوان Escaping آشنا شویم. در واقع، اگر ما بخواهیم به مفسر پی‌اچ‌پی دستور دهیم که یک کاراکتر خاص را تفسیر نکند بلکه همان‌طوری که نوشته شده آن را چاپ کند، می‌بایست از یک علامت Backslash یا \ قبل از کاراکتر مد نظر استفاده کنیم که به این پروسه، Escaping گفته می‌شود. به عنوان مثال، خواهیم داشت:

echo "I asked \"What is your name?\"";
echo 'I\'m Behzad Moradi';

اگر این اسکریپت را اجرا کنیم، می‌بینیم که بدون هیچ مشکلی عبارات مد نظر با علائم " و ' که داخل‌شان درج شده‌اند چاپ خواهند شد.

تغییر فایل php.ini به منظور نمایش ارورها

پیش از این دیدیم که اگر بخواهیم ببنیم چه باگی در سورس‌کد خود وجود دارد، بایستی به فایل error.log وب سرور آپاچی مراجعه کنیم که دائماً مراجعه کردن به این فایل در حین کدنویسی دشوار است و می‌بایست به دنبال راه‌کاری باشیم تا ارورها، هشدارها و غیره به سادگی داخل مرورگر در معرض دیدمان قرار گیرند. برای این منظور، بایستی تغییراتی در فایل php.ini که قبلاً با آن آشنا شدیم اعمال نماییم. برای این منظور، کامند زیر را در ترمینال وارد می‌کنیم:

sudo gedit /etc/php/7.0/apache2/php.ini

دستور sudo را پیش از همه وارد می‌کنیم چرا که برای اعمال تغییرات، نیاز به پرمیشن روت (ادمین) داریم. پس از باز کردن این فایل، به دنبال خطی می‌گردیم که عبارت display_errors = Off در آن نوشته شده است. به سادگی، مقدار Off را به On تغییر داده، وب سرور را ری‌استارت می‌کنیم و از آن پس خواهیم دید که داخل مرورگر، اگر اروری وجود داشته باشد در معرض دیدمان قرار خواهد گرفت. به عنوان مثال، ارور فوق که در فایل لاگ آپاچی دیدیم به صورت زیر در مرورگر در معرض دیدمان قرار خواهد گرفت:

Parse error: syntax error, unexpected 'm' (T_STRING), expecting ',' or ';' in /var/www/sokanacademy-php-course/index.php on line 2

چاپ کردن تگ‌های HTML با استفاده از زبان PHP

پیش از این گفتیم که زبان PHP این امکان را در اختیار ما قرار دهد تا بتوانیم کدهای HTML را به سادگی ایجاد کنیم. به عنوان مثال، می‌توان تگ‌های HTML را به صورت زیر با استفاده از PHP مورد استفاده قرار داد:

echo "This is <strong>bold</strong>";

در واقع، به عنوان خروجی دستور فوق، This is bold را خواهیم داشت. و یا به عنوان مثالی دیگر، می‌توانیم از تگ <br> برای نوشتن عبارات در چند خط مجزا استفاده کرد.

نکته‌ٔ دیگری که در ارتباط با دستورات echo و print می‌بایست مد نظر قرار داد این است که عبارت قرار گرفته مقابل آنها را می‌توانید در چند خط نوشت. برای مثال داریم:

echo "This sentence is
printed over two lines.";

اگر اسکریپت فوق را اجرا کنیم، خواهیم دید که .This sentence is printed over two lines بدون آنکه در خطوط مجزایی چاپ گردد، در معرض دید کاربر قرار خواهد گرفت اما اگر به Source صفحه نگاه کنیم (در مرورگر گوگل کروم روی صفحه کلیک راست کرده و روی گزینهٔ View page source کلیک کنیم)، با خروجی زیر مواجه خواهیم شد:

This sentence is
printed over two lines.

در واقع، می‌بینیم که در سورس HTML، اینتری که کرده‌ بودیم وجود دارد اما در خروجی وب‌پیج (صفحه)، این اینتر نشان داده نمی‌شود. اگر بخواهیم خروجی در خطوط مجزایی چاپ شود، می‌بایست از تگ‌ <br> و یا تگ‌های <p></p> استفاده کرد:

echo 'This sentence is<br>printed over two lines.';

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

This sentence is<br>printed over two lines.

آشنایی با مفهوم Language Construct

پیش از این گفتیم که دستوراتی همچون echo و print اصطلاحاً Language Construct نامیده می‌شوند اما امروزه به عنوان یک غلط مصطلح درآمده که دولوپرهای این زبان چنین ساختارهایی را Function (فانکشن یا تابع) می‌نامند.

در ارتباط با تفاوت مابین Language Construct و Function بایستی بگوییم که دستوراتی همچون echo در دل خود زبان PHP گنجانده شده‌اند و به سادگی توسط مفسر این زبان فهمیده می‌شوند اما این در حالی است که یک Function خود از چندین Language Construct تشکیل شده و زمانی که از یکی از فانکشن‌های از پیش نوشته شده در زبان PHP استفاده می‌کنیم، فانکشن مدنظر ابتدا به بخش‌های کوچک‌تری -یا چندین Construct دیگر- شکسته شده، سپس هر کدام از آنها توسط مفسر فهمیده می‌شوند. به طور کلی از جمله کانستراکت‌های پرکاربرد زبان PHP می‌توان به موارد زیر اشاره کرد:

کاربرد

کانستراکت‌

چاپ کردن چیزی

echo

چاپ کردن چیزی

print

ارسال یک پیام و پایان داده به اپلیکیشن

exit

عملکردی مشابه exit دارا است.

die

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

return

ایمپورت (وارد) کردن یک فایل به داخل فایلی دیگر

include

عملکردی مشابه include دارد با این تفاوت که مفسر اطمینان حاصل می‌کند که فایل مد نظر قبلاً include نشده باشد.

include_once

این دستور مشابه دستور include است با این تفاوت که اگر پس از استفاده از include اروری صورت گیرد، این دستور یک Warning (هشدار) نشان داده؛

سپس به سراغ اجرای الباقی اسکریپت خواهد رفت اما دستور require یک ارور از جنس Fatal نشان داده و اسکریپت متوقف می‌شود.

require

این دستور مشابه دستور include_once است با این تفاوت که هَندل کردن ارورها در آن مشابه دستور require است.

require_once

یک مقدار true یا false را بسته به اینکه پارامتر ورودی‌اش خالی باشد یا خیر باز می‌گرداند.

empty

اگر متغیر اصطلاحاً set شده باشد مقدار true و در غیر این صورت مقدار false را باز می‌گرداند.

isset

یک متغیر را از داخل مِموری پاک می‌کند.

unset

کاربرد کانستراکت چاپ کردن چیزی echo چاپ کردن چیزی print ارسال یک پیام و پایان داده به اپلیکیشن exit عملکردی مشابه exit دارا است. die پایان دادن به یک فانکشن و بازگرداندن نتیجهٔ مد نظر به جایی از اپلیکیشن که آن فاکشن را فراخوانی کرده بود. return ایمپورت (وارد) کردن یک فایل به داخل فایلی دیگر include عملکردی مشابه include دارد با این تفاوت که مفسر اطمینان حاصل می‌کند که فایل مد نظر قبلاً include نشده باشد. include_once این دستور مشابه دستور include است با این تفاوت که اگر پس از استفاده از include اروری صورت گیرد، این دستور یک Warning (هشدار) نشان داده سپس به سراغ اجرای الباقی اسکریپت خواهد رفت اما دستور require یک ارور از جنس Fatal نشان داده و اسکریپت متوقف می‌شود. require این دستور مشابه دستور include_once است با این تفاوت که هَندل کردن ارورها در آن مشابه دستور require است. require_once یک مقدار true یا false را بسته به اینکه پارامتر ورودی‌اش خالی باشد یا خیر باز می‌گرداند. empty اگر متغیر اصطلاحاً set شده باشد مقدار true و در غیر این صورت مقدار false را باز می‌گرداند. isset یک متغیر را از داخل مِموری پاک می‌کند. unset

آشنایی با تفاوت‌ دستورات echo و print

پیش از این گفتیم که این دو دستور PHP را می‌توان به جای یکدیگر مورد استفاده قرار داد اما در عین حال، این دو دستور دارای تفاوت‌هایی جزئی با یکدیگر هستند.

به عنوان یکی از تغییرات اساسی این دو، بایستی گفت که دستور echo هیچ چیزی را اصطلاحاً return نمی‌کند اما این در حالی است دستور print همواره مقداری را return خواهد کرد (این دست اطلاعات برای کاربران مبتدی اصلاً نیاز نیست بلکه صرفاً به خاطر جامعیت بخشیدن به این دورهٔ آموزشی آورده می‌شوند. همچنین در آموزش‌های آتی به تفصیل در مورد دستور return و کاربردهایش توضیح خواهیم داد.)

دستور echo را هم با استفاده از پرانتر و هم بدون آن می‌توان مورد استفاده قرار داد چرا که این دستور Function نیست که داشتن پرانتز برایش اجباری باشد بلکه به اصطلاح یک Language Construct است که هم با پرانتز و هم بدون پرانتز می‌توان آنها را مورد استفاده قرار داد:

$firstName = 'Behzad';
$lastName = 'Moradi';
echo $firstName;
echo "<br>";
echo($lastName);

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

$firstName = 'Behzad';
$lastName = 'Moradi';
echo $firstName, $lastName;

البته اگر از پرانتز برای echo استفاده کنیم، هرگز نمی‌توانیم بیش از یک پارامتر را داخل آن قرار داده و با کاما آنها را از یکدیگر مجزا سازیم:

$firstName = 'Behzad';
$lastName = 'Moradi';
echo ($firstName, $lastName);

به عنوان خروجی اسکریپت فوق داریم:

Parse error: syntax error, unexpected ',' in /var/www/sokanacademy-php-course/index.php on line 4

در اینجا اگر بخواهیم ارور را مرتفع سازیم، یا می‌توانیم پرانتزها را حذف کنیم و یا به جای علامت کاما،‌ از نقطه مابین نام دو متغیر استفاده کنیم:

$firstName = 'Behzad';
$lastName = 'Moradi';
echo ($firstName . $lastName);
    نکته

به چسباندن دو متغیر به یکدیگر در برنامه‌نویسی، اصطلاحاً Concatenation گفته می‌شود.

دستور print هم تا حدود زیادی شبیه به دستور echo است بدین صورت که می‌توان آن را هم با پرانتز و هم بدون آن مورد استفاده قرار داد:

$firstName = 'Behzad';
$lastName = 'Moradi';
print $firstName;
print "<br>";
print($lastName);

اما برخلاف echo، چه از پرانتز برای print استفاده کنیم و چه استفاده نکنیم، نخواهیم توانست چندین متغیر را با کاما از یکدیگر مجزا ساخته و از این دستور بخواهیم که آنها را چاپ کند:

$firstName = 'Behzad';
$lastName = 'Moradi';
print $firstName, $lastName;

در صورت اجرای اسکریپت فوق در مرورگر با ارور زیر مواجه خواهیم شد:

Parse error: syntax error, unexpected ',' in /var/www/sokanacademy-php-course/index.php on line 4

در حقیقت، می‌توان گفت که دستور echo می‌تواند بیش از یک پارامتر ورودی بگیرد اما print این‌گونه نیست. همچنین پیش از این گفتیم که دستور echo هیچ مقداری را return نمی‌کند (باز نمی‌گرداند). برای روشن‌ شدن مطلب، کد زیر را مد نظر قرار دهید:

$firstName = 'Behzad';
$newVariable = echo $firstName;
echo $newVariable;

به عنوان خروجی اسکریپت فوق داریم:

Parse error: syntax error, unexpected 'echo' (T_ECHO) in /var/www/sokanacademy-php-course/index.php on line 3

در واقع، echo صرفاً مسئول چاپ کردن چیزی است اما این در حالی است که ما در خط دوم از این دستور خواسته‌ایم که تا مقدار متغیر firstname$ را باز گردانده تا بتوانیم خروجی‌اش را در متغیر دیگری تحت عنوان newVariable$ ذخیره سازیم. در مقابل، دستور print چنین چیزی را در اختیار ما قرار می‌دهد. به عنوان مثال داریم:

$firstName = 'Behzad';
$newVariable = print $firstName;
//echo $newVariable;

به عنوان خروجی اسکریپت فوق داریم:

Behzad

حال یک بار دیگر این اسکریپت را اجرا می‌کنیم اما خط سوم را از کامنت در می‌آوریم:

$firstName = 'Behzad';
$newVariable = print $firstName;
echo $newVariable;

به عنوان خروجی اسکریپت فوق داریم:

Behzad۱

در واقع، از آنجا که دستور print همواره مقدار ۱ را return می‌کند، می‌بینیم که علاوه بر چاپ شدن مقدار متغیر newVariable$، مقدار ۱ هم چاپ شده است.

مقایسه‌ای مابین پرفورمنس echo و print

باتوجه به اینکه دستور echo هیچ مقداری را return نمی‌کند، پرفورمنس (راندمان) آن تاحدودی نسبت به دستور print بیشتر است. لذا توصیه می‌شود که تا حد ممکن از دستور echo استفاده نمایید.

online-support-icon