Каждую функцию, класс или "strange" и сложный сценарий следует комментировать, с указанием того, что Вы делаете в данном месте кода, помогая другим разработчикам понять, как это работает.
Отступы
Оформление кода очень важно для сохранения красивой и четкой структуры
| Неверный |
class myClass ( ) { Класс myClass () (
var $foo = "Foo" ; VAR $ Foo = "Foo";
function myFunction ( ) { Функция myFunction () (
echo $this -> foo ; Эхо $ это -> Foo;
} )
} )
function foo ( ) Функция Foo ()
{ (
global $dblink ; глобальной $ dblink;
if ( condition ) если (условие)
{ (
echo "True" ; Эхо "True";
} )
else еще
{ (
echo "False" ; Эхо "False";
} )
} )
|
| Верный |
class myClass ( ) { Класс myClass () (
var $foo = "Foo" ; VAR $ Foo = "Foo";
function myFunction ( ) { Функция myFunction () (
echo $this -> foo ; Эхо $ это -> Foo;
} )
} )
function foo ( ) { Функция Foo () (
global $dblink ; глобальной $ dblink;
if ( condition ) { если (условие) (
echo "True" ; Эхо "True";
} else { () Другое
echo "False" ; Эхо "False";
} )
} )
|
Выравнивание
Выравнивание кода тоже очень важно
$myArray = array(
'One' => '1',
'Two' => '2',
'Three' => '3',
'Four' => '4',
'Five' => '5'
)
$var = myFunction($var);
$variable = myFunction($var);
$another = myFunction($var);
Обьявление If
Не использовать длинные, обьявления IF ,
if (cond) {
//...
} else if (cond2) {
//...
} else if (cond3) {
//...
} else {
//...
}
Используйте лучше switch
switch ($var) {
case 1:
//...
break;
case 2:
//...
break;
case 3:
//...
break;
default: //Same as else
//...
break;
}
HTML-теги
Не используйте форму XHTML (слеш) в закрытии тегов
Помните, что DOCTYPE в MemHT является HTML 4.01 Transitional
Переменные, классы и имена функций
Используйте нижний регистр. для соединнения разные слов, первыую букву используйте большую (без пробелов)
$variable = "Foo";
$myVariable;
myFunction();
capitalizeFirstLetterOfNewWords();
Constant variables names should be uppercase and have an underscore _ as their first and last character Константы должны быть в верхнем регистре, и начинаться и заканчиваться подчеркиванием _
_FOO_ = "Constant";
_MYCONSTANT_;
Безопасность
Всегда используйте фильтр потока входящего и исходящего из базы данных (inCode и outCode функции).
Исходящие данные
$row = $dblink->get_row("SELECT value FROM table WHERE id=$id");
$name = outCode($row['value']);
Входящего данных
$var = inCode($_GET['value']);
Связь с базой данных
Не используйте mysql_query, mysql_fetch_assoc и другие функции, преднозначенные для работы с базой данных!
Если Вам необходимо связаться с базой данных из внешних скриптов используйте следующий код для подключения к базе данных:
require_once("inc/inc_config.php");
require_once("inc/inc_database.php");
$dblink = new database();
$dblink->connect();
// YOUR CODE GOES HERE
$dblink->disconnect();
Синтаксис:
//----------------------------------------------------------------
// GENERIC QUERY (Insert, Update, Delete...)
//----------------------------------------------------------------
//Original MySQL
mysql_query("UPDATE table SET value='$value' WHERE id='$id'");
//MemHT Portal class
$dblink->query("UPDATE table SET value='$value' WHERE id='$id'");
//----------------------------------------------------------------
// FETCH ROW
//----------------------------------------------------------------
//Original MySQL
$row = mysql_fetch_assoc(mysql_query("SELECT value FROM table WHERE id='$id'"));
$name = $row['value'];
//MemHT Portal class
$row = $dblink->get_row("SELECT value FROM table WHERE id='$id'");
$name = $row['value'];
//----------------------------------------------------------------
// FETCH LIST
//----------------------------------------------------------------
//Original MySQL
$result = mysql_query("SELECT * FROM table ORDER BY id");
while ($row = mysql_fetch_assoc($result)) {
echo $row['value'];
}
//MemHT Portal class
$result = $dblink->get_list("SELECT * FROM table ORDER BY id");
foreach ($result as $row) {
echo $row['value'];
}
//----------------------------------------------------------------
// NUM ROWS
//----------------------------------------------------------------
//Original MySQL
$num = mysql_num_rows(mysql_query("SELECT * FROM table"));
//MemHT Portal class
$num = $dblink->get_num("SELECT * FROM table");
Не забудьте поставить глобальной $dblink, в функции при использовании соединения с базой данных, если вы хотите использовать существующие связи
function example() {
global $dblink;
$row = $dblink->get_row("SELECT value FROM table WHERE id=12");
//....
}