> Главная > Руководства > MemHT Russian > Написание скриптов
Профиль
Добро пожаловать Гость
IP: 38.107.191.103

Имя
Пароль
Партнеры
Кнопка Gif


Rambler's Top100
Яндекс цитирования


Написание скриптов
Дата 22/01/2009 10:15  Автор Sovetov  Хиты 1006  Язык Global

Каждую функцию, класс или "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 (слеш) в закрытии тегов

Неверный
 <input ..... /><br /> 

Помните, что DOCTYPE в MemHT является HTML 4.01 Transitional

Верный
 <input .....><br> 

 


Переменные, классы и имена функций

Используйте нижний регистр. для соединнения разные слов, первыую букву используйте большую (без пробелов)

$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");
    //....
}

Здесь нет комментариев.
Поддержка - Антон Советов
MemHT Portal is a free software released under the GNU/GPL License by Miltenovik Manojlo