close
دانلود فیلم
کوتیشن یا دابل کوتیشن؛ کی و کجا استفاده کنیم؟!

محصول مرتبط با این پست : پکیچ 110 ساعت آموزش برنامه نویسی و طراحی سایت

فیلم های آموزش PHP به زبان فارسی

مجموعه فیلم های آموزشی طراحی وب سایت های پویا از دانشگاه هاوارد

 

 

 

 

 

آیا شما هم جز اون دسته از افرادی هستید که هنگام کدنویسی PHP، همواره از دابل کوتیشن برای مشخص کردن یک رشته کاراکتر استفاده می کنید؟!



به نظر می رسه اکثر مثالها و نمونه هایی که حتی در راهنمای PHP وجود داره تمایل زیادی به استفاده از دابل کوت رو نشون میده. اگرچه راه دومی هم وجود داره که به مراتب بهتر از قبلی هم هست و اون استفاده از کوتیشن یا (Single Quote) به جای Double Quoteهاست. برای مثال به جای:

 

 <?php
echo “Visit http://www.phpmystery.com”;
?>

میتوان از

<?php
echo ‘Visit http://www.phpmystery.com’;
?>


استفاده کرد. خوب حتما این تو ذهنتون شکل گرفته که «چه فرقی داره؟»
پاسخ اینه که در مثال بالا هیچ تفاوتی وجود نداره اما به مثال زیر توجه کنید:
میخواهیم یه تکه کد 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″>’;
?>

لینک کوتاه پست
مطالب مرتبط با پست جاری
  • نکات مهم
    1- لطفا نظر خود را با زبان فارسی بیان کنید
    2- رایتم نظرات اسپم و تبلیغی شما را تایید نمی کند
    3- لطفا نظرات شما بدون ابهام و واضح باشد
  • نام
    ایمیل (منتشر نمی‌شود) (لازم)
    وبسایت
    :):(;):D;)):X:?:P:*=((:O@};-:B/:):S
    نظر خصوصی
    مشخصات شما ذخیره شود ؟[حذف مشخصات] [شکلک ها]
    کد امنیتی
به کانال تلگرام سایت ما بپیوندید