Autor | Zpráva | ||
---|---|---|---|
jan99 Profil * |
#1 · Zasláno: 7. 2. 2013, 19:19:36
ahoj, davam ukazku php: Potreboval bych aby mi nekdo opravil ten kod tak aby to fungovalo. To co mi neni jasne je popsano rovnou v kodu. Diky moc
class a{ private $var; public function __construct($var){ $this->var = $var; //ok tedka je var promena private a je dosazitelna napric tridou bez pouziti global, ale jak ji udelat zaroven statickou!? } public static function f(){ $this->var //nebude fungovat kdyz budu volat funkci staticky!? co stim? $this->p(); //muzu v ramci staticke funkce zavolat unkci p? jak se to da udelat? } private function p(){ $this->var //ok volam v ramci tridy, bude fungovat $this->f(); //muzu zavolat z private statickou funkci? } } |
||
Alphard Profil |
#2 · Zasláno: 7. 2. 2013, 19:42:25
$this se používá při instančním volání. Při statickém lze použít self:: .
|
||
Monkeys Profil * |
#3 · Zasláno: 7. 2. 2013, 19:53:04
jan99:
staticke funkcie mozes volat 2 sposobmi. v tvojom pripade: a::f(); self::f(); M. |
||
jan99 Profil * |
#4 · Zasláno: 7. 2. 2013, 20:08:08
vím kdy se používá this a self, ale jak je patrné z ukázky nevím jak udělat proměnou $var zároveň statickou a instanční když je předávána skrz konstruktor oné třídy. Respektive instanční se dá udělat v konstruktoru takto $this->var = $var; ale jak ji udělat statickou? Jde o to že potřebuju aby $var bylo viditelné v private funkci a taky ve static funkci. Je to všechno v té ukázce..
|
||
Someone Profil |
#5 · Zasláno: 7. 2. 2013, 20:09:26
jan99:
Když je předáváná přes konstruktor, tak to znamená, že vytváříš instanci dané třídy, proč bys tedy chtěl aby byla ta vlastnost i statická? |
||
jan99 Profil * |
#6 · Zasláno: 7. 2. 2013, 20:26:14 · Upravil/a: jan99
Someone: prostě jde v základu o to aby byla proměná $var viditelná jak pro statické, tak pro privátní funkce.. Jinak bych musel do každé statické funkce psát global $var aby to fungovalo, což mi nepřijde jako zrovana elegantní řešení
Jeste tu davam jednu samozrejme nefunkci ukazku. $varx by mela byt zaroven private static i public. <?php class a{ public private static $varx; //chci aby byla statická, private i public public function __construct($varx){ } public static function f(){ return $varx; } public function p(){ return $varx; } private function c(){ echo $varx; //zobraz kůll } } $inst = new a('kůll'); echo $inst->p(); //zobraz kůll echo a::p(); //zobraz kůll ?> Jedine co me napada je dat $varx jako konstantu a takto bude "viditelna" neustale, ale myslim ze musi existovat i jine reseni |
||
Alphard Profil |
//chci aby byla statická, private i public
Tohle je dokonalý oxymóron Přej si, co chceš, zlatý důl nebo věž, sladkou sůl, smutný ráj, suchý déšť. Nechcete nám naznačit, jaký praktický problém řešíte? Třeba najdeme problém v tom. Nebo nerozumíte teorii? Ten váš požadavek je pochopitelně nesplnitelný. jan99: Přestal jste odpovídat. Já jsem svůj příspěvek nemyslel špatně, jen jsem chtěl názorně vysvětlit, že public a private jsou naprosto opačného významu a není možné chtít oboje zároveň. Buď jedno, nebo druhé. Popište, o co se snažíte, jak to chápete. Budu-li moc, rád vám pomohu. |
||
Časová prodleva: 11 let
|
0