Reglerna finns inte för att de är bättre än andra vanor, utan för att det ska vara enhetligt. Vi som gör Hamsterpaj trivs med denna standard och följer den, även om du är van att koda annorlunda så måste all kod som ska in i HP följa denna standard.
* Vi använder endast enkla citattecken ( ' ) i php och javascript, i HTML använder vi dubbla ( " )
* Vi separerar alltid strängar, radbrytningar och variabler: $out .= 'Tjena ' . $name . '<br />' . "\n";
* Funktioner returnerar, de skriver inte till output-bufferten (inget echo med andra ord)
* Funktionsnamn skrivs med små bokstäver och med understreck mellan orden, fundtionens "område" skrivs först, exempelvis: photos_list() och inte list_photos()
* SQL-frågor ställs såhär:
$query = 'SELECT * FROM table';
$result = mysql_query($query) or report_sql_error($query, __FILE__, __LINE__);
while($data = mysql_fetch_assoc($result))
Vi använder inte mysql_fetch_array, fetch_row eller liknande. Bara assoc.
* All kod skrivs och kommenteras på engelska
* Funktioner som kan ta fler än ett argument skall ta en optionsarray, exempel:
$options['limit'] = 5;
$options['author'] = 13;
$options['mode'] = 'light';
$entries = entries_fetch($options);
* Indentering görs med tabbar, inte mellanslag
* Vi kommenterar bara där det behövs, i övrigt ska koden skrivas lättläst
* Konstruerar vi långa SQL-frågor med flera rader kod så ska mellanslag, kommatecken och liknande alltid placeras först på nästföljande rad, inte sist på föregående.
* Vi copy-pastar så gott som aldrig kod, och gör vi det skall den formateras för att följa vår standard.
* I while, if, switch, foreach, for- och liknande satser placeras måsvingen alltid på ny rad.
* Inställningar läggs i en separat php-fil med ändelsen .conf.php och läggs i include/configs/, dessa laddas automatiskt
* Funktionsbibliotek läggs i include/libraries/, har ändelsen .lib.php och laddas manuellt.
* CSS-filer läggs endast i stylesheets/, javascripts i javacripts/
* Vi använder css-klasser och ID, vi skriver bara inline-styles i undantagsfall
* Javascript ska så långt som möjligt hakas på i efterhand av javascript-filen, undvik inline javascripts.
* window.onload får ej användas, används istället womAdd('my_function()');
* Alla bilder placeras på images.hamsterpaj.net som nås under /mnt/images/
* Se upp för SQL-frågor inuti loopar, använd hellre joins och kör en tung fråga än att köra en loop och 25 frågor på samma sida.
Tillägg av Joel 2008-04-19 15:35
* Vi kör inte några COUNT(*) i onödan, om man inte kan räkna med mysql_num_rows(). Inte heller några beräkningar ska göras av MySQL, om de kan utföras av PHP.
* Alla sökvägar MÅSTE utgå ifrån rooten (/). Vi skriver alltså /traffa/profile.php även om vi befinner oss i /traffa/guestbook.php - inte guestbook.php. ../diskussionsforum/index.php är inte heller okej.
* Vi kör inte några COUNT(*) i onödan, om man inte kan räkna med mysql_num_rows(). Inte heller några beräkningar ska göras av MySQL, om de kan utföras av PHP.
* Alla sökvägar MÅSTE utgå ifrån rooten (/). Vi skriver alltså /traffa/profile.php även om vi befinner oss i /traffa/guestbook.php - inte guestbook.php. ../diskussionsforum/index.php är inte heller okej.
Tillägg av Joar 2008-08-12 02:49
"* Alla sökvägar MÅSTE utgå ifrån rooten (/). Vi skriver alltså /traffa/profile.php även om vi befinner oss i /traffa/guestbook.php - inte guestbook.php. ../diskussionsforum/index.php är inte heller okej."
- Alla sökvägar förutom /storage/www/www.hamsterpaj.net/data/include/core/common.php. som ska inkluderas i varje fil på det här sättet om vi antar att du berfinner dig i diskussionsforumet:
"* Alla sökvägar MÅSTE utgå ifrån rooten (/). Vi skriver alltså /traffa/profile.php även om vi befinner oss i /traffa/guestbook.php - inte guestbook.php. ../diskussionsforum/index.php är inte heller okej."
- Alla sökvägar förutom /storage/www/www.hamsterpaj.net/data/include/core/common.php. som ska inkluderas i varje fil på det här sättet om vi antar att du berfinner dig i diskussionsforumet:
Ett stycke php-kod:
require_once('../include/core/common.php');