Sice na přehlednosti to moc nepřidá, ale pokud použijeme konstanty, normálnímu zápisu se to myslím vyrovná. Jde o technologii bitového posunu. Pokud máme stránku s větším množstvím nastavení, můžeme šetřit databázi tím, že vytvoříme pro daná nastavení pouze řádek - INT / BYTE (int - 32 check boxů, byte - 8 checkboxů)
Jak jistě víte, každé číslo, znak, řetězec můžeme vyjádřit binárně. Využijeme finty, kdy si takto číslo sestavíme sami.
Máme formulář, kde si uživatel nastavuje např. chování stránky. Jsou zde i jiné prvky (např. menu, text). My budeme řešit pouze checkboxy, případně radiobutony. Máme 8 checkboxů - uživatel zvolí tohle nastavení (1 - zaškrtlé):
00101110 rázem to můžeme převést na číslo, či dokonce znak. Číslo: 46, tudíž do databáze, či cookies zapíšeme jen 46 do jednoho prvku. Jakmile data budeme chtít číst - opět převedeme do binární podoby. Musíme pouze vědět, na jaké pozici je které nastavení. To lze zjednodušit např. konstantami
<?php
define("SET_REKLAMA", 0);
define("SET_AUTOBALANCE", 1);
define("SET_AUTOKICK_IDLE", 2);
define("SET_AUTOKICK_TK", 3);
define("SET_ANTICHEAT", 4);
define("SET_VOTEKICK", 5);
define("SET_VOTEMAP", 6);
define("SET_VOTERESTART", 7);
// BitSettings( ciselny_zapis, pozice_bitu );
$autobalance = BitSettings( $data, SET_AUTOBALANCE );
Je to výhodnější u větších aplikací...
Ještě bych se vrátil k radiobuttonu. Dejme tomu máme 8 přepínačů - stačí nám 3 bity
000 - prepinac 1
001 - prepinac 2
010- ...
011
100
101
110
111- prepinac 8
Když víme, co kde je, lze všechno narvat do jedné proměnné. Mj. to lze provést se vším kromě textu... (např. menu atd.)
např. BYTE - [ x x x ] - radio, [ x x x ] - checkbox, [ x x ] - menu = 8 bitů
Což nám dává dohromady 15 nastavovacích prvků v jednom bajtu.
Pro menu můžeme také využít možnost kombinace bitů(pokud menu není více výběrové), tj.
0 0 - 1 možnost
0 1
1 0
1 1 - 4 možnost
V komplikovanějších systémech to může pomoct, dokonce i zpřehlednit kód - nastavení se řeší zvlášť, kde je v tom jasno pomocí konstant. Nevýhoda je, že to může mírně zpomalit vykonání skriptu, což ale při použití cache / js nemusíme řešit.
Sám zastávám názor, že klientovi přenechám co nejvíce výpočtů, ale s tím, že bude zaručena kompatibilita. Moderní prohlížeče by neměli mít problém. Dokonce výsledný vzhled gui se může utvořit až na klientově straně, klient dostane pouze surová data z DB.