[php] endを使った制御構文|endif endfor endwhile endforeach endswitch
スポンサーリンク
phpを使い始めた当初、if:~endif;のようなendを使った制御構文のことを知らなくて、初めて見たときはびっくりした。WordPressがバージョン2.7くらいの時に、テーマファイルをいじろうとしたのがその存在を知ったきっかけ。WordPressってif:~endif;とかすごくよく使ってる。なんだこりゃって思ったね。その頃は違和感しか感じなかったので、自分で書き換える時には{}にしていた。
が、最近はendを使って書くのもいいなと思うようになってきた。コーディング規約で決められているならそれに従わなければならないが、そうでない時は状況によっては積極的に使っている。htmlとphpが混在したコードを書かねばならない時に分かりやすいというのが一つ。他に、入れ子になったり{}の中が長くなった時にも、endを使った方が分かりやすいように思う。
以下はendを使った制御構文のまとめ。
if文
if( $foo ): echo "カッコの後ろはセミコロン;ではなくコロン:"; endif;
if-else文
phpのelseifは、普通にカッコを使う場合はelse if
のように、elseとifの間にスペースがあっても構わない。しかしendifを使う場合、else if():
はエラーになる。スペースは使わず、elseif():
と書かねばならない。
if( $foo === "bar" ): echo "hello world !"; elseif( $foo === "hoge" ): echo "hello wooooorld !"; else: echo "hello woooooooooooooorld !!!!!!"; endif;
for文
for($i=0;$i<10;$i++): echo "hello w" . str_repeat( 'o' , $i ) . "rld"; endfor;
while文
while( $foo ): echo "hello world !"; endwhile;
なお、do-while文にはendを使う書き方は存在しない。
foreach文
foreach( $foo as $bar => $hoge ): echo "hello " . $hoge . " !"; endforeach;
switch文
switch文でもendswitchが使える。switch文の場合もともとcaseのところでコロンを使っているわけで、switch():~endswitch;を使っていないのが不思議なくらいだ。
switch( $foo ): case "bar": echo "hello world !"; break; endswitch;
スポンサーリンク