Przed rozpoczeciem kodowania warto by bylo opracowac styl kodowania dla projektu. Proponuje zachowanie takiej samej konwencji jak w przypadku projektu Coyote. Wazne jest aby wszyscy stosowali sie do takiego stylu. Oto propozycje:

- Nazewnictwo

Zarówno w przypadku nazw funkcji, zmiennych czy stałych oraz klas stosujemy nazewnictwo angielskie. Np. Templates(), sql_query(), $topic_id. Nie deklaruj danych w ten sposób: Szablony(), zapytanie_sql(), $id_tematu. Nazwy zmiennych powinny rozpoczynać się od małych liter; nazwy klas powinny rozpoczynać się od liter wielkich. Stałe powinny być pisane jedynie wielkimi literami. Dozwolony jest znak _ (podkreslenie) w nazwach zmiennych - nie stosujemy natomiast stylu wielbladziego - np. $TopicId.

- Wcięcia

Stosujemy zasadę, że wcięcia powinny wynosić 4 (cztery) spację; niedozwolone jest używanie tabulatorów.

<?
    if ( $db->sql_query($sql) )
    {
        do_something();
    }
?>  

Tak więc podstawowe wcięcie o którego zaczynamy pierwszy blok instrukcji ma wcięcie w wielkości 4 spacji.

- Struktury kontrolne

Do struktur kontrolnych zaliczamy instrukcję if(), while(), for() itp. Zalecane jest, aby w strukturach kontrolnych znalazla się jedna spacja po i przed nawiasem. Przykład:

if ( ( empty($cookie) ) && ( $id != 0 ) )
{
    // jakies zadanie
}
else
if ( empty($cookie) )
{
    // zrób coś innego
}

Prosimy też o wpisywanie nawiasów klamrowych nawet wówczas, gdy nie są one potrzebne (np. gdy występuje jedynie jedna instrukcja). Zwiększa to czytelność kodu oraz eliminuje ew. błędy. Nie zapominamy oczywiście o czterech spacji wcięcia. Niedopuszczalna jest np. taka konstrukcja:

if ($x > 0) // coś tam
if ( $y > 1)
  // coś tam

- Deklaracja funkcji

Nie ma żadnych żelaznych reguł regulujących sposób definicji funkcji. Zaleca się jednak, aby funkcje były pisane małymi literami bez stosowania 'stylu wielbłądziego'. Dopuszczalne jest użycie znaku _ - np.

function do_something()
{
// dobrze
}

function DoSomething()
{
// zle 
}

- Komentarze

Jest jedna zasda: im więcej komentarzy tym lepiej. Dodatkowo każdy plik PHP powinien mieć na górze na główek wyglądający mniej więcej tak:

/****************************************************************************
*                                account_edit.php
*                         -------------------------
*                      rozpoczety    : 24.07.2003 r.
*                      wersja        : $Revision$
*                      zmiana        : $Date$
*
****************************************************************************/

Na samej górze powinna się znaleźć nazwa pliku. Dalej data rozpoczęcia oraz znaczniki CVS: $Revision: 1.6 $ oraz $Date: 2004/06/08 11:44:25 $. W te miejsca CVS wstawi odpowiednie dane - jak aktualny numer wersji pliku oraz datę ostatniej edycji. Zaleca się również, aby na samym dole przed znakiem ?> umieszczać kolejny znacznik CVS:

// $Id$
?>

Dzięki temu na samym dole znajdzie się dokładniejsza informacja (w formie komentarza) na temat ostatniej edycji pliku, dacie oraz autorze.

Jeżeli chodzi o komentowanie kodu to używaj komentarzy w stylu C ( /* */ ) oraz //. Oba są OK - nie używaj natomiast standardu komentowania Perla (#). Komentarze piszemy w języku polskim.

- ChangeLog

Bardzo istotną sprawą podczas pracy grupowej jest plik ChangeLog, który powinien zawierać listę zmian w projekcie. Oto jak wygląda fragment pliku ChangeLog, projektu Coyote:

-------------------------
Coyote ChangeLog
-------------------------

$Id: coyote.html,v 1.2 2004/06/08 11:44:25 Adam Exp $
$Source: /coyote/coyote-0-9-1/inne/coyote.html,v $

10.09.2003 <[email protected]>

  * poprawiony blad w pliku function_post.php (zla nazwa funkcji)
  * uporzadkowanie kodu w pliku bbcode.php
  * nowy fragment kodu powodujacy usuwanie niepotrzebnych znacznikow na forum
  * lista emoticonek przeniesiona do pliku images.inc
  * drobna poprawka w formularzu forum_admin.tpl - zaznaczenie czy w poscie maja byc wyswietlone emoticonki
  * drobne poprawki w szablonach (estetyczne)
  * admin.php: ukrywanie tekstu 'Wyslij odpowiedz na e-mail' jezeli user edytuje swoj post, ale nie jest to jego temat

Proponuje takze stosowac ten ChangeLog w encyklopedii (lub podobny).

- Stałe

W przypadku deklaracji stałych, prosimy używać jedynie wielkich liter - pozwoli to na wyróżnienie stałych od zmiennych.

- Zmienne

Zaleca się deklarowanie zmiennych, które były by najbardziej opisowe - np. $topic_id (ID tematu), $post_id (ID postu). Nie deklaruj zmiennych jednoznakowych - np. $x, $y, $z. Zmienne jednoznakowe mogą mieć zastosowanie jedynie w przypadku pętli for() i zmiennej pomocniczej.

- Zapisywanie instrukcji SQL

W sprawie komend SQL kierujemy się zasadą, że nie należy oszczędzać linijek na to, aby w dłuższych zapytaniach były one czytelniejsze. Czyli: niech zapytania zajmują kilka linijek jeżeli jest to potrzebne - przykład:

$sql = 'SELECT *
        FROM ' . TOPIC . ' 
        WHERE topic_id = ' . $_GET['id'];

Słowa kluczowe SQL muszą być napisane wielkimi literami (SELECT, UPDATE, WHERE itp) natomiast nazwy kolumn małymi. Przyjęło się aby całe zapytanie ujmować jedynie w pojedyncze apostrofy. Jak widzisz w powyższym przykładzie w przypadku wstawienia stałej lub zmiennej "rozdzielamy" łańcuch. Jeżeli natomiast chodzi o kolumny typu char() to należy używać apostrofów podwójnych:

$sql = 'UPDATE ' . TOPIC . ' SET
        topic_subject = "' . $_POST['topic_subject'] . '"';

Oto inne przykłady:

$sql = 'SELECT topic_subject, topic_user, user_name 
        FROM ' . TOPIC . ', ' . USERS . ' 
        WHERE topic_id = ' . $_GET['id'] . '
            AND user_id = topic_id
            AND topic_id > 100';

Zwróć uwagę na zapis słów kluczowych AND oraz OR - zostały one zapisane z wcięciem w wielkości dwóch spacji.