Styl zápisu kódu
Formátování kódu
Způsob odsazení, zarovnání a závorkování kódu se shoduje se stylem
BSD KNF style.
Odsazení a zarovnání kódu
V ukázkach je znak mezera vyjádřen tečkou, znak tabelátor dvěmi většítky ».
- Délka řádku by neměla přesahovat 80 znaků.
- Aby nebyla omezena svoboda uživatelů v nastavení hloubky odsazení, je veškerý kód odsazen pravými tabelátory (hard tab). Šířka tabelátoru není nijak omezena.
- Pokud má funkce mnoho parametrů (řádek překročí 80 znaků), zarovnají se parametry s použitím mezer pod sebe. Stejně tak se zarovnají pod sebe části složité podmínky, prvky pole apod.
function.foo($bar,
.............$bar2);
- Logická struktura kódu je posilována zarovnáním společných částí (=, ||) řádků pod sebe.
$foo...=.5;
$babar.=.6;
- U výrazů řídících struktur je před a za podmínku přidána jedna mezera.
if.($foo.==.1).{
- SQL dotazy se zpřehledňují použitím zarovnání.
$query.=."SELECT.`name`,
.................`pass`
..........FROM.`users`
..........WHERE.`id_user`.=.'1'"
- Před a za operátory je přidána jedna mezera (platí i pro operátor "tečka").
$where = "WHERE `id` = '" . $id . "'";
Závorkování
Pojmenování
- Veškeré názvy a komentáře jsou anglicky a neobsahují diakritiku.
- Jména proměnných, tříd a funkcí/metod by měly být smysluplné a co možná nejkonkrétnější.
- Názvy proměnných a funkcí/metod začínají malým písmenem a používají camelCase.
- Názvy tříd začínají velkým písmenem a také používají CamelCase. Pokud třída dědí od jiné třídy, měl by být název rodiče předřazen před název potomka, přičemž mezi oba názvy vložíme podtržítko (NázevRodiče_NázevPotomka).
- Klíčová slova SQL a názvy PHP konstant jsou psány velkými písmeny.
Dokumentace
Všechny třídy, metody, funkce atd. budou dokumentovány pomocí
PHPDoc.
Uvozovky
- Pokud PHP řetězec neobsahuje substituce je ohraničen jednoduchými uvozovkami.
- SQL dotazy jsou ohraničeny dvojitými uvozovkami.
- Názvy tabulek a sloupců v SQL dotazech jsou obaleny zpětnými uvozovkami (`users`).
Shrnutí
<?php
/**
* ActiveRecord_User
* @author Daniel Milde <daniel@milde.cz>
* @copyright Daniel Milde <daniel@milde.cz>
* @license http://www.opensource.org/licenses/gpl-license.php
* @package Core
*/
/**
* ActiveRecord_User
* @author Daniel Milde <daniel@milde.cz>
* @package Core
*/
class ActiveRecord_User extends Core_ActiveRecord
{
/**
* Array of fields in table
* @var string[] $fields
*/
public $fields = array('id_user' => array('visibility' => 0, 'type' => 'id'),
'name' => array('visibility' => 1, 'type' => 'text'),
'password' => array('visibility' => 1, 'type' => 'password'));
/**
* Constructor
* @param int $id_user ID of the user
* @return Core_ActiveRecord_User
*/
public function __construct($id_user = FALSE)
{
parent::__construct('user', $id_user);
}
/**
* Saves the object to DB
* @return Core_ActiveRecord_User
*/
public function save()
{
if ($this->id_user != 0) {
$this->update();
} else {
$this->insert();
}
return $this;
}
...
}