ugrás a tartalomhoz

static mező értékadás két stringből

Szekeres Gergő · 2008. Szep. 16. (K), 19.39
lehet én vagyok nagyon tudatlan, de ez miért nem működik?

class teszt {
 static $valami = "akarmi";
 static $masvalami = self::$valami."adalek";
}
próbáltam self nélkül, osztálynévvel, simán a nevével, és sehogy nem ment, mindig szintaxerrort kaptam. Van erre valami megoldás? annyit szeretnék, hogy adott egy osztály, abban van egy sima statikus mező, és egy másik statikus mezőnek adni értékül az adott mezőt, plusz még valamit (a valami nélkül sem ment). a lényeg, hogy statikus legyen, hogy ne kelljen az osztályt példányosítani.
 
1

Csak

tolmi · 2008. Szep. 16. (K), 20.29
Azért nem, mert a static változók inicializálója csak és kizárólag olyan érték lehet, amely nem tartalmaz műveletet.

Gondolj csak bele. Ha lehetne műveletet tartalmazó értéket adni inicializálásul egy static változónak, akkor igencsak bonyolult lenne az értelmező dolga, hiszen ellenőriznie kellene, hogy nem csinálsz-e körkörös hivatkozást (ami ugye végtelen ciklust vagy versenyhelyzetet jelenthetne). Éppen ezért - hogy ezzel ne fékezzék az értelmező munkáját - létezik ez a kikötés.

Nem mellesleg ha ilyet szeretnél csinálni 99.999999% hogy alapjaiban rossz az elképzelésed. Persze hogy mi a helyes megoldás, az mindíg a környezettől függ.
2

nem feltétlenül

Szekeres Gergő · 2008. Szep. 16. (K), 21.11
csak az alapértéket állítaná be, utána nem követné le a többi mező változását. nem akarok hülyeséget írni, de mintha c#-ban lehetne így inicializálni.

elképzelés annyi volt, hogy adott volt egy oldal, ahol a configadatokat egy osztályból szedte ki minden modul magának (és ez volt a baj, hogy valahol statikusként), és ebben az osztályban sok mező lefedte egymást. (pl abszolút elérések adminoldanak, képeknek stb.).
3

inicializáld az osztályon kívül

tgr · 2008. Szep. 16. (K), 21.36

class teszt {  
  static $valami;
  static $masvalami;
}
teszt::$valami = "akarmi";  
teszt::$masvalami = teszt::$valami."adalek"; 
6

működik, köszi

Szekeres Gergő · 2008. Szep. 17. (Sze), 08.52
De nem igazán értemi miért csak így lehet megoldani. Nekem ez inkább hiányosságnak tűnik még mindig, mint átgondolt fejlesztésnek.
7

Olvasd el a magyarázatom

tolmi · 2008. Szep. 17. (Sze), 09.24
Ennél többet nem lehet mondani. Ennek meg nem értése inkább a te hiányosságod, mint a nyelvé. Fejtsd ki hogy mi nem világos a magyarázatomban.
8

teljesen világos,

Szekeres Gergő · 2008. Szep. 17. (Sze), 10.24
kedves tolmi, nem a te magyarázatoddal volt problémám, hanem pont azzal, hogy csak ilyen úton lehet elérni azt az eredményt, amire igazából lehetne egy egyszerübb megoldás is. részemről a "vita" lezárva.
9

Na várj

tolmi · 2008. Szep. 17. (Sze), 13.22
Ha te tudsz erre egyszerű megoldást, akkor oszt meg és szerintem nem fog senki sem vitázni hogy bekerüljön-e a kódba.
4

Konstans!

deejayy · 2008. Szep. 17. (Sze), 07.45
Konstans!

static $valami = KONSTANS;
static $masvalami = KONSTANS."masvalami";

viszhall!
5

konstans sem megy

Szekeres Gergő · 2008. Szep. 17. (Sze), 08.50
nálam erre is "Parse error: syntax error, unexpected '.', expecting ',' or ';' " hibát dob.
10

Hopsz

deejayy · 2008. Szep. 25. (Cs), 06.24
Ja igen, belegondolva tényleg nem kell működnie, hiszen a "." operátorhoz kiértékelés kellene.