محصول مرتبط با این پست : پکیچ 110 ساعت آموزش برنامه نویسی و طراحی سایت
فیلم های آموزش PHP به زبان فارسی
مجموعه فیلم های آموزشی طراحی وب سایت های پویا از دانشگاه هاوارد
آیا شما هم جز اون دسته از افرادی هستید که هنگام کدنویسی PHP، همواره از دابل کوتیشن برای مشخص کردن یک رشته کاراکتر استفاده می کنید؟!
به نظر می رسه اکثر مثالها و نمونه هایی که حتی در راهنمای PHP وجود داره تمایل زیادی به استفاده از دابل کوت رو نشون میده. اگرچه راه دومی هم وجود داره که به مراتب بهتر از قبلی هم هست و اون استفاده از کوتیشن یا (Single Quote) به جای Double Quoteهاست. برای مثال به جای:
<?php echo “Visit http://www.phpmystery.com”; ?> میتوان از <?php |
استفاده کرد. خوب حتما این تو ذهنتون شکل گرفته که «چه فرقی داره؟»
پاسخ اینه که در مثال بالا هیچ تفاوتی وجود نداره اما به مثال زیر توجه کنید:
میخواهیم یه تکه کد HTML رو داخل یک متغیر ذخیره کنیم؛ اگر از دابل کوتیشن استفاده کنیم:
همونطور که می بینید اگر رشته کاراکتر، حاوی کاراکتر (”) باشه باید اون رو با کاراکتر بک اسلش () اسکیپ کنیم تا Parse Error پیش نیاد ولی در مثال دوم می بیینم که هر چه داخل (’) باشه، عینا و حرف به حرف نوشته میشه.
دلیل بعدی اینکه راه دوم پرفورمنس بالاتری داره! استفاده از کوتیشن همواره سریعتر از دابل کوتیشن هست و در برخی موارد این تفاوت چند صد درصد میشه!
با نگاهی به Benchmark زیر فکر کنم همه چیز روشن بشه.
نتیجه: توی رشته کاراکترهایی که در ” قرار میدید، از کاراکتر $ به تنهایی استفاده نکنید، مگر اینکه بخواهید مقدار یک متغیر را جانشین کنید و اگر هم خواستید این کار رو انجام بدید بهتره اون رو با یک بک اسلش اسکیپ کنید.
وقتی از کاراکترهای خاصی نظیر n یا r و t که برای فرمت بندی رشته کاراکتر بکار میره، استفاده می کنید، اگر اونها رو داخل ‘ قرار بدید اثر خودشون رو از دست میدن و باید حتما داخل ” قرار بگیرند.
<?php echo ‘check out http://www.phpmystery.com’ . “nr” . ‘to discover unknowns about PHP’; ?> |
با این تفاسیر میشه گفت:
۱» اگر متغیری داخل رشته کاراکتر نیست که بخواهید مقدارش جانشین بشه از کوتیشن استفاده کنید.
۲» اگر متغیری داخل رشته کاراکتر باشه افزودن {} باعث سرعت عملکرد میشه.(*)
<?php $sql = “select * from `mytable` where `status` = ‘{$status}’ order by name” ?> |
۳» بجای دستور Print از Echo استفاده کنید. Property اون آبجکت باشه)
برای مثال:
(*) دو جا هست که آکولادها به کار ما میان؛ اولا وقتی که بخواهیم یک سری کاراکتر درست چسبیده به نام متغیر رو نمایش بدیم و مورد بعدی وقتی عبارتی که میخواهیم درون رشته کاراکتر جای بدیم یک متغیر ساده نباشه(مثلا یک آرایه دوبعدی یا خروجی متد یک آبجکت یا
<?php $sport1 = ‘volley’; $plan1 = “I will play $sport1ball in the summertime”; $plan2 = “I will play {$sport1}ball in the summertime”; ?> |
مشکل از اونجا ناشی میشه که مفسر وقتی داخل یه رشته کاراکتر به $ برخورد کنه، تا رسیدن به فاصله خالی شروع به جمع آوری کاراکترها میکنه و نام متغیر رو تشخیص میده و اگر قبلا مقدار گرفته بود، مقدارش رو جایگزین میکنه وگرنه مقدار NULL یا هیچ رو به جای نام متغیر قرار میده. همونطور که فهمیدید خروجی مثال بالا به قرار زیره:
<?php // $plan1 = ‘I will play in the summertime’; // $plan2 = ‘I will play volleyball in the summertime’ ?> |
double (”) vs. single (’) quotes Is a there a difference in using double (”) and single (’) quotes for strings. Call 1′000x + 101 % 1: single (’) quotes. Just an empty string: $tmp[] = ”; Total time: 3[ms] + 100 % 2: double (”) quotes. Just an empty string: $tmp[] = “”; Total time: 3[ms] + 111 % 3: single (’) quotes. 20 bytes Text : $tmp[] = ‘aaaaaaaaaaaaaaaaaaaa’; Total time: 3[ms] + 118 % 4: double (”) quotes. 20 bytes Text : $tmp[] = “aaaaaaaaaaaaaaaaaaaa”; Total time: 3[ms] + 115 % 5: single (’) quotes. 20 bytes Text and 3x a $ : $tmp[] = ‘aa $ aaaa $ aaaa $ a’; Total time: 3[ms] + 461 % 6: double (”) quotes. 20 bytes Text and 3x a $ : $tmp[] = “aa $ aaaa $ aaaa $ a”; Total time: 13[ms] + 113 % 7: double (”) quotes. 20 bytes Text and 3x a $ : $tmp[] = “aa $ aaaa $ aaaa $ a”; Total time: 3[ms] |
<?php
echo “<table border=”1” cellspacing=”0” cellpadding=”0”>”;
?>
و اگر از کوتیشن استفاده کنیم
<?php
echo ‘<table border=”1″ cellspacing=”0″ cellpadding=”0″>’;
?>
بخش نظرات