最近看 Laracasts 學到的一個小技巧,可以讓程式碼在 PHP + HTML View Template 更好閱讀。

Example

首先我們可能有一筆資料有學生的成績,並把成績分成 Excellent Good Bad。

index.php

<?php

$datas = [
['number' => 1, 'name' => 'Marry', 'score' => 56],
['number' => 2, 'name' => 'Bob', 'score' => 70],
['number' => 3, 'name' => 'Sandy', 'score' => 98],
['number' => 4, 'name' => 'Jack', 'score' => 12]
];

require 'index.view.php';

原本寫法

index.view.php

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<table>
<?php foreach ($datas as $data) { ?>
<tr>
<td><?= $data['number'];?></td>
<td><?= $data['name'];?></td>
<?php if ($data['score'] >= 90) { ?>
<td>Excellent</td>
<?php } elseif ($data['score'] >= 60 && $data['score'] < 90) { ?>
<td>Good</td>
<?php } elseif ($data['score'] < 60) { ?>
<td>Bad</td>
<?php } ?>
</tr>
<?php } ?>
</table>
</body>
</html>

雖然有縮排,但 PHP + HTML 寫在一起的時候,有些情況很難判斷哪個括號是誰的,括號太多造成許多困擾。

替代語法

index.view.php

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<table>
<?php foreach ($datas as $data) : ?>
<tr>
<td><?= $data['number'];?></td>
<td><?= $data['name'];?></td>
<?php if ($data['score'] >= 90) : ?>
<td>Excellent</td>
<?php elseif ($data['score'] >= 60 && $data['score'] < 90) : ?>
<td>Good</td>
<?php elseif ($data['score'] < 60) : ?>
<td>Bad</td>
<?php endif; ?>
</tr>
<?php endforeach; ?>
</table>
</body>
</html>

用了替代語法後結尾跟整體清楚很多,大大提高可讀性。

Conclusion

do…while, while, switch… 等這些也有替代語法,雖然替代語法在 PHP 和 HTML 裡可以提高可讀性,但純 PHP 裡還是用原本的寫法會比較清楚乾淨。

References

php.net - Alternative syntax for control structures


2017-05-13