Autor | Zpráva | ||
---|---|---|---|
it47 Profil |
#1 · Zasláno: 23. 11. 2021, 16:49:38
Ahojte,
chcem sa prosim spytat, preco mi Phpstorm pise stale chybu, ked mam definovanu novu konstantu priamo vo funkcii, napr. function moja_funkcia() { define ('CONSTANTA_ROK', date("Y")); echo CONSTANTA_ROK; } Kod realne funguje spravne, avsak stale to mam cervene, ze tam je chyba. Viem to prosim spravit nejako lepsie? Vopred dakujem velmi pekne. it47 |
||
Keeehi Profil |
#2 · Zasláno: 24. 11. 2021, 01:06:58
it47:
On asi úplně neříká, že tam je chyba. Spíš ti ukazuje, že je tam potenciální problém. Protože když se ta funkce zavolá podruhé, PHP vyhodí výjimku (notice nebo warning, záleží na verzi php). Takže ti to spíš ukazuje na nevhodné použití. Ono samotné používání konstant není úplně ideální, jelikož jsou globální. Takže to má stejné nevýhody jak používání globálních proměnných. |
||
it47 Profil |
#3 · Zasláno: 24. 11. 2021, 14:50:20
Keeehi:
> On asi úplně neříká, že tam je chyba. Spíš ti ukazuje, že je tam potenciální problém. Protože když se ta funkce zavolá podruhé, PHP vyhodí výjimku (notice nebo warning, záleží na verzi php). > Takže ti to spíš ukazuje na nevhodné použití. Ono samotné používání konstant není úplně ideální, jelikož jsou globální. Takže to má stejné nevýhody jak používání globálních proměnných. Dakujem velmi pekne, vysvetlenie dava uplne zmysel a suhlasim s nim. A teda ako by to bolo prosim najlepsie vyriesit, ked potrebem konstantu len v ramci funkcie? Mam pouzit klasicke premenne? Konstanty som pouzil pre vacsiu prehladnost. A Phpstorm mi takisto "podciarkuje" zastaraly sposob definicie konstatny cez define, a navrhuje ju vo formate: const CONSTANTA_ROK = 2021
Aky je medzi tym prosim rozdiel? Na druhej strane mi potom nejde const CONSTANTA_ROK = date("Y") , ako keby hodnota konstanty nemohla byt hodnota z funkcie.
Vopred dakujem velmi pekne. it47 |
||
N71 Profil * |
#4 · Zasláno: 24. 11. 2021, 15:10:33
Konstrukt
const zpracovává už kompiler před samotným spuštěním skriptu. Takže může obsahovat jen skalární hodnoty a nemůže být uvnitř funkcí, cyklů a podobně.
Obecně bys měl konstanty používat na místě neměnných skalárních hodnot. Například jako náhradu různých výčtových typů, číselných koeficientů, textových identifikátorů a podobně. Jinak konstanta má globální scope, uvnitř funkce ji uvidíš. Ale kolem a dokola – raději bys měl zaměřit svou pozornost na OOP, v globálním scope se slušný programátor nepohybuje. |
||
Časová prodleva: 2 roky
|
0