سلام ;
اگر تازه شروع به یادگرفتن زبان برنامه نویسی تحت وب php کرده باشید ، ممکن است هنوز از بعضی ریزه کاری ها و نکات آن آگاه نباشید و همین کار شما را مشکل تر کند.در این مبحث سعی می کنیم به مهم ترین آنها اشاره کنیم دید شما نسبت به نکات کور و دور از دید آن نیز بیشتر شود. مثلا فرق استفاده از نقل قول تکی ‘ و نقل قول دوتایی ” ، استفاده از تگ کوتاه php ، استفاده از if در یک خط و انجام شرط بدون استفاده از if اشاره کرد.لطفا با ما باشید
نقل قول دوتایی و یکتایی
شاید شما ای تفاوت این دو آگاه باشید و شاید هم نه ،اما به هر حال نحوه استفاده به جا از هر کدام از اینها می تواند از بروز خطاها و اشکالات در برنامه جلوگیری کند.
<?php echo 'hello world'; ?>
<?php echo "hello world"; ?>
شاید بگویید هر دو کد بالا یک کار را انجام می دهند ولی یک تفاوت اساسی بین شان وجود دارد و آن هم این است که در کد اول که از ‘ استفاده شده است ، محتوای داخل آن پردازش نمی شود و صرفا همانطور نمایش داده می شود ولی در کد دوم که از نقل قول دوتایی استفاده شده است ، اول مقدار داخلش محاسبه شده و سپس نمایش داده می شود.پس می توان از متغیر ها هم استفاده کرد
<?php $example = 'hello world'; echo '$example'; // outcome will be $example echo "$example"; // outcome will be hello world ?>
همانطور که می بینید هنگام استفاده نقل قول دوتایی ، مدت زمانی باید صرف محاسبه مقادیر داخلی آن شود و این می تواند مقداری بار اضافی به دنبال بیاورد.البته در برنامه های مقیاس کوچک مشکلی نخواهد بود ولی مثلا در برنامه ای که یک حلقه 1000 بار اجرا می شود ، می توان به سرعت بیشتر نقل قول تکی پی برد .
پس حالا اگر بخواهید یک متغیر و مقداری متن را با هم ترکیب کنید ، می توانید به این صورت عمل کنید:
<?php $example = 'hello world'; echo 'This is my '.$example.' for PHP'; // outcome This is my hello world for PHP echo "This is my $example for PHP"; // outcome This is my hello world for PHP ?>
البته نتیجه هر دو روش یکی خواهد بود ولی با توجه به سرعت پردازش بیشتر نقل قول تکی و نیز خوانایی بیشتر آن ، گزینه اول می تواند بهتر باشد
استفاده از تگ مختصر PHP
حتما می دانید وقتی می خواهیم یک متغیر را در بین کدهای html نمایش دهیم ، باید تگ php را باز کرده و سپس با echo آن را چاپ کنیم و تگ را ببندیم.البته این بین یک یا چند line break هم می زنیم که باز حجم و شکل برنامه را بر هم می زند.راه حل چیست ؟ همان php short tags 🙂
<?php $example = 'This is some text that I want in my paragraph.'; ?> <html> <head> </head> <body> <h1>I love short tags</h1> <p> < ?php echo $example; ?> </p> </body> </html>
از آن جایی که شخصل دوست دارم همه کارها را با کمترین کد انجام دهم ، از روش زیر استفاده می کنم :
<?php $example = 'This is some text that I want in my paragraph.'; ?> <html> <head> </head> <body> <h1>I love short tags</h1> <p> < ?=$example?> </p> </body> </html>
نتیجه هر دو این کدها یکی خواهد بود ولی در راه دوم ، از کد کمتری استفاده کردیم.
نکته : تگ های کوتاه (php short tags) می توانند در فایل php.ini غیر فعال شده باشند و از این لحاظ تضیمنی برای صحت عملکردشان وجود ندارد.ولی به صورت پیش فرض روی همه سرورها فعال هستند.
استفاده از تگ های کوتاه با همراه دستور شرطیIF
تگ های کوتاه همچنین وقتی به همراه دستور if بکار روند ، بسیار کاربردی خواهند بود.داشتن یک دستور if معمولی داخل مقدار زیادی کد html می تواند خوانایی برنامه را کاهش دهد ولی با تگ های کوتاه قضیه فرق می کند
<?php $minimum_age = 21; $customer = 19; ?> <p>You are <?php if($customer<$minimum_age) { echo 'NOT'; } else { echo ''; } ?> old enough to buy alcohol here.</p>
حالا وقتی از if به صورت دیگر استفاده کنیم کدمان به این شکل در می آید :
<?php $minimum_age = 21; $customer = 19; ?> <p>You are < ?=($customer<$minimum_age?'NOT':'')?> old enough to buy alcohol here.</p>
می بینید چند خط از کدمان کم شد و این در برنامه های بزرگ تر می تواند یک نعمت باشد.احتمالا نحوه کار این یک خط برای بعضی از دوستان کمی گنگ باشد.برای همین بیشتر توضیح می دهیم:
- اول “$customer< $minimum_age” دقیقا همان کار “if($customer<$minimum_age)” را انجام می دهد
- بعد “?’NOT’:” مساوی “{ echo ‘NOT’; }” است (کلا هر چیزی که بعد از علامت سوال ؟ و قبل از کولون : قرار بگیرد ، در صورت درست یا true بودن شرط ، بکار برده میشود)
- آخرین قطعه “else” “:”” است که برابر “else{ echo ”; }” کار می کند(هر چیزی که بعد از کولون قرار بگیرد در صورت منفی یا false بودن شرط اجرا می شود.همان کاری که else انجام می دهد)
در انتهای این پست می خواهم یک راه کوچک را به شما معرفی کنم تا بتوانید به صورت داینامیک متغیرها را ایجاد کنید و کارتان را راحتتر انجام دهید.بهترین استفاده از این روش هنگامی است که شما با دیتابیس کار می کنید.اول با مثالی عمومی شروع می کنیم که معمولا استفاده می شود:
<?php $id = '1'; $query = mysql_query("SELECT name,title,content FROM blog_post WHERE id='$id' LIMIT 1"); $data = mysql_fetch_assoc($query); ?> <div id="blog_wrapper"> <h2>< ?=stripslashes($data['title'])?></h2> <span id="blog_author">< ?=stripslashes($data['name'])?></span> <p>< ?=stripslashes($data['content'])?></p> </div>
حالا می خواهیم به دیتابیس وصل شده و داده های آن را در قالب HTML نمایش دهیم.همچنین تمام آیتم های آن را از زیر تیغ stripslashes() گذراندیم 🙂 تا اسلش هایی را که هنگام ورود داده ها به دیتابیس جهت امنیت آن ها بهشان افزوده ایم را ازشان جدا کند.به جای اعمال stripslashes به تک تک آنها ، می توانیم با استفاده از $$key = stripslashes() این کار را یکباره روی همه آیتم ها اعمال کنیم:
<?php $id = '1'; $query = mysql_query("SELECT name,title,content FROM blog_post WHERE id='$id' LIMIT 1"); $data = mysql_fetch_assoc($query); if(is_array($data)) { foreach($data as $key => $value) $$key = stripslashes($value); } <div id="blog_wrapper"> <h2>< ?=$title?></h2> <span id="blog_author">< ?=$name)?></span> <p>< ?=$content)?></p> </div>
امیدوارم استفاده کرده باشید 🙂
سلام. ممنون. داشتم دنبال فایلای وبلاگی می گشتم که تو یومی نوشتیم. پیداش نکردم! 🙁
سلام سارا خانم
خوبین ؟ بفرمایید اینم فایل ها خدمت شما : http://cdn.fotolia.ir/sources/fotolia.ir-SimpleBlog-p3101.zip
اینم مطلبش : http://fotolia.ir/?p=3101
خوشحالم بعد اینکه پروفایل تونو پاک کردین باز دیدیمتون
موفق باشید
متشکرم.
مثل هميشه عالي و نكته مهمتر اين كه قسمت منبع رو ذكر كرديد و اين يعني كپيرايت! كه در بين وبلاگنويساي فارسي در حال فراموش شدنه!!
سلام دوست من
ممنون ، بله متاسفانه امیدوارم روزی برسه که قرار دادن لینک منبع نشانه افتخار باشه نه ترس
موفقیت
ممنون علی جان.
سومین نکته واقعاً برام سوال بود.جایی توضیحی واسش ندیده بودم.
بیصبرانه منتظر مطالب php فتولیا هستم .;)
سلام حامد جان
ممنون ، فرصت بشه حتما .برای خودم هم واقعا آموزنده هستن
موفقیت