Autor Zpráva
Ofi
Profil
Zdravím,
v jedné třídě si potřebuji definovat konstantu AND a OR...
problém je v tom, že to nejde...
ve chvíli kdy při deklaraci konstant napíšu:
const AND = "AND";
const OR = "OR" 

kod skončí hláškou "unexpected T_LOGICAL_AND"... potřebuji 100% AND a OR, nic jiného... je nějaká možnost jak to udělat?
(potřebuji aby pak bylo možné napsat např.
$neco->nejakaMetoda(AND); 

popř.:
$neco->nejakaMetoda(Neco::AND); 
Kcko
Profil
AND a OR jsou logické operátory, je tudíž logické, že to nepůjde. Si před to dej třeba podtržítko ;-)
Ofi
Profil
reaguji na Kcka:
AND a OR jsou logické operátory, je tudíž logické, že to nepůjde. Si před to dej třeba podtržítko ;-)

já vím, neříkáš mi nic nového, a s podtržítkem to zatím mám, ale to vzhledem ke knihovně kterou píšu není zrovna uživatelsky výhodné... potřeboval bych to nějakým způsobem obelstít...
Joker
Profil
Ofi:
já vím, neříkáš mi nic nového
No tak v tom případě čeho se týká dotaz?
AND a OR jsou rezervovaná slova PHP a nelze je tedy použít jako název konstanty, třídy, funkce nebo metody.
Ofi
Profil
reaguji na Jokera:
No tak v tom případě čeho se týká dotaz?
Ofi:„potřebuji 100% AND a OR, nic jiného... je nějaká možnost jak to udělat?

Joker:„...nelze je tedy použít jako...
hm to jsi mě moc nepotěšil :D a nedá se nějak LOGICKÉ AND použít jako konstanta?
Joker
Profil
Ofi:
Co je nesrozumitelného na větě „AND a OR jsou rezervovaná slova PHP a nelze je tedy použít jako název konstanty, třídy, funkce nebo metody“?

Ale zdrojáky PHP jsou ke stažení, takže teoreticky by bylo možné si zkompilovat vlastní PHP modul, který nebude používat AND a OR.
Samozřejmě s tím, že veškeré PHP skripty používající AND a OR tím standardním způsobem přestanou fungovat.

(edit: vyhozeno jedno „samozřejmě“ :-) )
tiso
Profil
Ofi: ale veď ty tie konštanty nepotrebuješ definovať - načo definovať konštantu s hodnotou zhodnou s názvom?
Ofi
Profil
reaguji na Jokera:
Co je nesrozumitelného na větě ‚AND a OR jsou rezervovaná slova PHP a nelze je tedy použít jako název konstanty

v mém posledním příspěvku jsem spíš myslel, jako, že je použiji jako nějaký konstatntní rozeznávač... např. když jako argument přijde logické AND tak se stane tohle a když logické OR tak zase tamto...

by bylo možné si zkompilovat vlastní PHP modul,
ano, nad tím jsem uvažoval, ale bylo by to pro mě více komplikací než užitku...

reaguji na tisa:
jsem detailista, ale hlavně mi to spadá do logiky celé knihovny... rád bych kdyby stačilo prostě napsat AND bez uvozovek a dalších věcí okolo, protože přesně tak pracuji s mnoha dalšími argumenty aby to bylo co nejjednodušší... teď by to teoreticky bylo jedno - protože to je stejně pro mě, ale do budoucna až si to vlastním používáním vychytám bych rád tuto knihovnu prezentoval i pro použití komukoliv, a v takovém případě by oddělené pravidlo pro AND a OR bylo matoucí...
tiso
Profil
Ofi: musíš sa zmieriť s tým, že niektoré "konštanty" sú zabrané. Pozri ako to riešia funkcie/triedy v PHP (napríklad funkcia str_pad(), alebo trieda MySQLi) - používajú vlastné prefixy. Zmyslom knižnice je čo najmenej ovplyvňovať prácu usera. Ak si niekto do projektu vloží tvoju knižnicu, a ty v nej definuješ v knižnici 10 konštánt, z ktorých sa bude 5 biť s názvami konštánt rozrobeného projektu, hádaj čo sa stane? Knižnica pôjde do preč.
Ofi
Profil
reaguji na tisa:
okej, díky za tip :) na to mrknu ;) a máš pravdu... no mě se tam hádají akorát ty AND a OR, ale asi si teda vymyslím nějaké ty prefixy no... resp. podtržítko na začátek každé konstanty, nebo na konec...
Majkl578
Profil
Nejjednodušším řešením bude nějaký prefix. Spíš než podtržítko bych volil nějaké jmenný prostor, který by určoval použití, např. $neco->nejakaMetoda($neco::TYPE_AND);.
Ofi
Profil
reaguji na Majkla578:
hm, to bude asi nejlepší :)

děkuju všem za účast :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0