سینتکس جایگزین PHP برای فایل‌های ویو

مجتبی پاکزاد کدایگنایتر 3.1.9 در حال تکمیل رایگان

اگر از تمپلت انجین (موتور قالب) کدایگنایتر استفاده نمی‌کنید، باید مستقیما خود کدهای PHP را در فایل‌های ویو ینویسید (به اصطلاح به صورت pure PHP بنویسید). برای حداقل شدن کدهای PHP در این فایل‌ها و خواناتر شدن بلاک کدها، توصیه می‌شود که از سینتکس جایگزین PHP برای ساختار کنترلی و دستور کوتاه echo استفاده کنید. اگر با این سینتکس آشنایی ندارید، این سینتکس این امکان را فراهم می‌آورد تا براکت‌ها و دستورات echo را از کدهای خود حذف کنید.

پشتیبانی خودکار از شورت‌تگ

توجه

اگر متوجه شده‌اید که سینتکس توضیح داده شده در این صفحه، در سرور کار نمی‌کند، احتمالا به دلیل این است که شورت‌تگ‌ها (Short tags) در فایل php.ini غیرفعال هستند. کدایگنایتر به صورت اختیاری قابلیت بازنویسیِ در لحظه شورت‌تگ‌ها را دارد، این قابلیت حتی در صورت ساپورت نشدن شورت‌تگ‌ها توسط سرور، امکان استفاده از شورت‌تگ‌ها را فراهم می‌کند. این قابلیت در فایل config/config.php قابل فعال‌سازی است.

دقت داشته باشید که اگر از این قابلیت استفاده کنید، اگر خطایی در فایل‌های ویو رخ دهد، پیام خطا و خطی که خطا در آن رخ داده است به درستی نمایش داده نمی‌شود. در عوض، تمام خطاها مانند خطاهای خروجی eval() نمایش داده می‌شود.

جایگزین دستور Echo

معمولا برای نمایش مقدار یک متغییر، دستور زیر استفاده می‌شود:

<?php echo $variable; ?>

با سینتکس جایگزین می‌توانید از دستور زیر استفاده کنید:

<?=$variable?>

ساختارهای کنترلی جایگزین

ساختارهای کنترلی، مانند if و for و foreach و while نیز به همین صورت می‌توانند ساده‌نویسی شوند. برای مثال برای استفاده از foreach:

<ul>
<?php foreach ($todo as $item): ?>
<li><?=$item?></li>
<?php endforeach; ?>
</ul>

دقت کنید که از هیچ براکتی استفاده نشده است. در عوض، براکت پایانی با endforeach جایگزین شده است. تمامی ساختارهای کنترلی لیست شده در بالا، سینتکس بستن مشابهی دارند: endif و endfor و endforeach و endwhile

همچنین دقت کنید که به جای استفاده از سمی‌کالن در انتهای هر ساختار (به جز آخرین مورد)، از کالن استفاده می‌شود. این خیلی مهم است!

در ادامه به مثال دیگری که در آن از if/elseif/else استفاده شده، توجه کنید، به کالن‌ها دقت کنید:

<?php if ($username === 'sally'): ?>

<h3>Hi Sally</h3>
<?php elseif ($username === 'joe'): ?>
<h3>Hi Joe</h3>
<?php else: ?>
<h3>Hi unknown user</h3>
<?php endif; ?>