Autor Zpráva
Pilda
Profil
Ačkoliv vím co jsou konstanty a jak se používají, nějak jsem jim do teďka nepřišel na kloub. Jeden z důvodů je, že kód je tak podle mě méně čitelný, než když použiju klasické proměnné, protože editor nepozná, že se jedná o kontantu a tak jí barevně neodliší.

Zajímalo by mě, jestli mají konstanty nějaké zásadní výhody, oproti běžným proměnným, krom toho, že jsou neměnné (výhoda, že nejdou přepsat/podstrčit?) a fungují i uvnitř funkcí.

Konkrétně mi jde třeba o rychlost zpracování.


$prispevku_na_strance = 20; // zápis pomocí proměnné
define("PRISPEVKU_NA_STRANCE", 20); //zápis pomocí konstanty
nightfish
Profil
http://frenchfragfactory.net/ozh/archives/2006/06/01/php-variables-vs- constants/

tam je "porovnání rychlosti"
vítězně z něj vychází proměnné, nicméně bral bych to s rezervou

a výhody konstant?
1) mají globální rozsah (tzn. platí i ve funkcích bez nutnosti explicitního vyjádření)
2) odolné proti chybám typu if ($a = 1) ...
Pilda
Profil
nightfish:
mockrát děkuji za odpověď (škoda, že tu neni cash systém, byl by jsi už asi milionář :).

Ta druhá výhoda mě nenapadla a je pravda, že u rozsáhlejších projektů může pomoc.

A čim to vůbec je, že je pomalejší? Mám se toho bát? (ať už u menších, či větších aplikací)
nightfish
Profil
Pilda
mockrát děkuji za odpověď (škoda, že tu neni cash systém, byl by jsi už asi milionář :).
njn, už aby se v Česku pořádně rozšířil nějaký mikroplatební systém (třeba paypal)

Ta druhá výhoda mě nenapadla a je pravda, že u rozsáhlejších projektů může pomoc.
v tom odkazovaném článku je ta odolnost uvedena jenom tak na okraj, protože můžeš při porovnávání vždycky použít
if (1 == $a), což v případě, že zapomeneš na jedno rovnítko, taktéž vyhodí chybu...

A čim to vůbec je, že je pomalejší? Mám se toho bát? (ať už u menších, či větších aplikací)
to "porovnání rychlosti" jsem dal do uvozovek úmyslně - vůbec jsem nezkoumal, jaký způsob testování kolega použil a předpokládám, že v běžných aplikacích je tento rozdíl neznatelný
Toto téma je uzamčeno. Odpověď nelze zaslat.