| 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: 13 let
|
|||
0