Правила оформления программного кода
Мои же рекомендации касаются в основном читабельности кода. Для PHP это особенно важно, так как на одной странице часто смешивается и выполняющийся на сервере программный код, и вывод HTML, и сценарии JavaScript. Чтобы все это не превратилось в кашу, в которой даже создатель через некоторое время не в силах разобраться, полезно придерживаться следующих правил.
Главное правило
<?php ############################################ # ВЫВОД ИНФОРМАЦИИ О ТОВАРАХ # # Файл создан: 23.11.2006 # Автор: Юрий Кошаровский # E-mail: info@yukosh.ru ############################################ ?>
<?php /*======================================================================*\ || #################################################################### || || # vBulletin 3.5.4 - Licence Number FKC009AF94 || || # ---------------------------------------------------------------- # || || # Copyright ©2000-2006 Jelsoft Enterprises Ltd. All Rights Reserved. || || # This file may not be redistributed in whole or significant part. # || || # ---------------- VBULLETIN IS NOT FREE SOFTWARE ---------------- # || || # http://www.vbulletin.com | http://www.vbulletin.com/license.html # || || #################################################################### || \*======================================================================*/ ?>
Оформление синтаксический конструкций
<?php // Правильно if ($x == 1) { echo "OK"; }
// Неправильно if ($x == 1) { echo "OK"; } ?>
<?php // Правильно if ($x == 1) { echo "OK"; }
// Неправильно if ($x == 1) echo "OK"; ?>
<?php // Допустимо echo ($i%2 == 0) ? "#000000" : "#FFFFFF"; $color = ($i%2 == 0) ? "#000000" : "#FFFFFF";
// Недопустимо ($i%2 == 0) ? $color = "#000000" : $color = "#FFFFFF ";
// Еще хуже $b = 4; $c = 6; $a = ($b == 4) ? ($c == 0) ? "value1" : "value2" : "value3"; //синтаксически вполне правильная конструкция ?>
<?php // Правильно number_format($number, 2, ",", " "); function MyHandler($error, $message) { // какой-то код }
// Неправильно number_format($number,2,","," "); function error_handler($error,$message) { // какой-то код } ?>
<?php // Правильно $a = ($c + $d) * 3;
// Допустимо $string = "Сегодня ".date("d")." число";
// Неправильно $a=($c+$d)*3; ?>
Как правильно смешивать PHP и HTML-код
<?php // Допустимо (небольшой фрагмент текста) echo "Сегодня ".date("d")." число";
// Допустимо (отладочная информация) if ($a == 1) { echo "true"; // какой-то код } else { echo "false"; // какой-то код } ?>
<!-- А лучше так --> Сегодня <?=date("d")?> число
<?php // Недопустимо echo "<table><tr><td>Марка</td><td>Модель</td></tr><tr><td>$brand</td><td>$model</td></tr></table>"; ?>
<?php // Правильно $date = date("d").".". date("m").".". date("Y"); ?> <h1>Привет, сегодня у нас <?=$date?></h1>
<?php // Неправильно echo "<h1>Привет, сегодня у нас ".$date."</h1>";
// За такое вообще убивать надо echo "<h1 class=\"my_h1\">Привет, сегодня у нас ".date("d").".". date("m").".".date("Y")."</h1>"; ?>
<!-- Правильно --> <table> <tr> <td>Марка</td> <td>Модель</td> </tr> <?php foreach ($cars as $brand => $model) { ?> <tr> <td><?=$brand?></td> <td><?=$model?></td> </tr> <?php } ?> </table>
<!-- Неправильно --> <table> <tr> <td>Марка</td> <td>Модель</td> </tr> <?php foreach ($cars as $brand => $model) { echo " <tr> <td>".$brand."</td> <td>".$model."</td> </tr>"; } ?> </table>
<?php // А некоторые делают так. Расстрел на месте echo " <table> <tr> <td>Марка</td> <td>Модель</td> </tr>"; foreach ($cars as $brand => $model) { echo " <tr> <td>".$brand."</td> <td>\"".$model."\"</td> </tr>"; } echo "</table>";
<?php foreach ($cars as $brand => $model) { // закрывающий тег сдвинут вправо, так как следует после foreach ?> <!-- HTML-код находится на одном уровне с тегами PHP, так как логически им не подчиняется --> <tr> <td><?=$brand?></td> <td><?=$model?></td> </tr> <?php } ?>
|