[ zgas @ 02.10.2008. 11:46 ] @
Veoma mi je neophodno da mogu ovo nekako da uradim.

Znaci u nekom metodu hocu naknadno da definisem staticki metod - ovo je nacin koji ne radi:

Code:

class Klasa
{
    static function metod()
   {
       static::novaPromenljiva = 'nesto';      <-------------   javlja gresku, jer se ovako ne moze difinisati.
   }
}


Imam mnogo statickih metoda u mnogo statickih klasa.
Za svaki metod mora se definisati staticka promenljiva.
Toj statickoj promenljivoj pristupam samo iz tog metoda - ni iz jednog drugog.
Cesto dolazi do greske jer se u metodu cesto pristupa statickoj promenljivoj,
pa kada menjam naziv metoda, moram da pazim da bi tacno promenio ostalo.

Da li postoji neka funkcija koja bi "dodala" staticku variablu klasi? Trazio sam i nisam nasao.
Tada bi sve islo automatski.

Da li imate ideju.
[ agvozden @ 02.10.2008. 15:46 ] @
Koristim staticke klase ali ne koristim promenljive u njima

uglavnom za takve stvari jos uvek koristim globalne promenljive, posto koristim framework razvijen ranije

ni meni nije najjasnije, verovatno je jos uvek to u razvoju, kao i namespaces...

Ja cu jos malo sacekati sa implementacijom toga, buduci da puno servera ne podrzava php 5.3
[ zgas @ 02.10.2008. 19:08 ] @
Da to ne moze u php5.2, ali ne znam da li ce moci u php5.3.

Slazem se da treba traziti druge nacine.
[ urukhai @ 10.03.2009. 09:20 ] @
ne znam da li sam dobro shvatio, ali mislim da je ovo ok. Verzija PHP na kome sam probao je 5.2.2

Code:

class test {
    public static $var = '';

    public static function setVar() {
        self::$var = 'Hello';
    }

    public function getVar() {
        return self::$var;
    }
}


$testClass = new test;

test::setVar();
echo test::$var;
echo $testClass->getVar();
[ zgas @ 10.03.2009. 10:40 ] @
Staticnu promenljivu "static::$var" si upravo definisao vam bilo kog metoda izrazom: "public static $var = '';". U metodima si samo pozivao vec definisanu statik promenljivu.
[ urukhai @ 03.10.2009. 14:37 ] @
He, kapiram da si do sada mozda resio problem...
Moram da priznam da nisam bas najbolje prvi put procitao i shvatio sta hoces. Mozda je ovo resenje:

Code:

class test {
    public static $vars = array();

    public static function setVar($var_name, $var_value) {
        self::$vars[$var_name] = $var_value;
    }

    public static function getVar($var_name) {
        return self::$vars[$var_name];
    }
}


test::setVar('test', array(1,2,3,4,5));
print_r(test::getVar('test'));


A mozda sam se opet zeznuo :)