International PHP Conference Berlin 2025

Denetim yapıları için diğer sözdizimi

(PHP 4, PHP 5, PHP 7, PHP 8)

PHP bazı denetim yapıları için farklı bir sözdizimi sağlar. Bu yapılar if, while, for, foreach ve switch yapılarıdır. Her durumda, bu farklı sözdiziminin basit şekli açılışta kullanılan kaşlı ayracın yerine iki nokta imi (:) ve kapanışta kullanılan kaşlı ayraç yerine de sırasıyla endif;, endwhile;, endfor;, endforeach; ya da endswitch; deyimlerinden birini kullanmaktır.

<?php if ($a == 5): ?>
A eşittir 5
<?php endif; ?>

Yukarıdaki örnekte, içeriği "A eşittir 5" olan HTML bloğu iki noktalı sözdimi kullanılarak yazılmış bir if deyiminin içine gömülmüştür. HTML bloğu yalnızca $a değişkeni 5'e eşit olduğunda gösterilecektir.

İki noktalı sözdimi, else ve elseif için de kullanılabilir. Birazdan vereceğimiz örnek, iki noktalı sözdizimi ile yazılmış elseif ve else içeren bir if yapısıdır:

<?php
if ($a == 5):
echo
"a eşittir 5";
echo
"...";
elseif (
$a == 6):
echo
"a eşittir 6";
echo
"!!!";
else:
echo
"a ne 5 ne de 6'dır";
endif;
?>

Bilginize:

Aynı denetim kümesi içinde karışık sözdizimi desteklenmemektedir.

Uyarı

switch deyimi ile ilk case deyimi arasındaki herhangi bir çıktı (boşluklar dahil) sözdizimi hatasına yol açar. Örneğin, aşağıdaki kod geçersizdir:

<?php switch ($foo): ?>
<?php case 1: ?>
...
<?php endswitch; ?>

Fakat bu örnek geçerlidir. switch deyiminden sonraki satırsonu karakteri ?> kapama etiketinin parçası olarak ele alınıp switch ile case arasında hiçbir şey çıktılanmaz:

<?php switch ($foo): ?>

<?php case 1: ?>
...
<?php endswitch; ?>

Daha fazla örnek için while, for ve if cümleciklerine bakabilirsiniz.

add a note

User Contributed Notes 1 note

up
27
toxyy
2 years ago
I feel compelled to give a more elegant way using heredoc than the other comment:

<ul>
<?php foreach($list as $item): echo
<<<ITEM
<li id="itm-$item[number]">Item $item[name]</li>
ITEM;
endforeach;
?>
</ul>

Which works better with multi line blocks, as you only need one overall php tag.

(please don't omit the closing </li> tag despite it being legal, personal preference)
To Top