Nastavení hodnoty statické proměnné
- Popik
- Člen | 30
Ahoj,
nevím si rady s jedním problémem. Podle mne by to fungovat mělo, ale zatím bohužel…
Potřeboval jsem předávát mezi presentery nějaké údaje(id a jméno presenteru odkud přijdu). Nejdříve jsem na to šel přidáním těhto parametrů pri volaní redirect. To funguje, ale pro uchování těchto získaných parametrů jsem každe volání
<?php
redirect('this')
?>
musel volat zase s těma parametrama, jelikož např. údaj kam se vrátit byl presenteru původně poslán při jeho zavolání…
Proto jsem se rozhodl definovat v BasePresenteru statické proměnné, které by tyto informace uchovávaly tak dlouho, dokud by je zase někdo nezměnil. Takže definované to mám takto:
BasePresenter:
<?php
abstract class Admin_BasePresenter extends BasePresenter{
private static $id_supp;
public static function setId_Supp($value){
self::$id_supp = $value;
}
public static function getId_Supp(){
return self::$id_supp;
}
}
?>
V prezenterech, které dědí jsem tedy volal
<?php
parent::getId_Supp()
?>
a v handleru jsem volal např.
<?php
parent::setId_Supp($id)
?>
Problém je, že funkce getId_Supp() nevrací nic resp. funkce setId_Supp($id) nenastaví statickou proměnnou na hodnotu $id, protože pokud v definici statické proměnné zároveň určím její hodnotu, třeba takto:
<?php
private static $id_Supp = 1;
?>
pak funkce getId_Supp() vrací správně 1.
Podle php manuálu by to ale chodit mělo. Nemohl by mi prosím někdo poradit v čem je problém? Díky.
- Majkl578
- Moderator | 1364
Vpodstatě vše co jsi tu napsal je špatně. Nevím kde jsi přišel na to, že se statické vlastnosti přenášejí mezi požadavky. V PHP manuálu to ale určitě nebylo.
Tomu o co se marně snažíš se říká persistentní parametry.
Vypadalo by to tedy nějak takto:
abstract class Admin_BasePresenter extends BasePresenter{
/** @persistent */
public $id_supp;
}
Jelikož se jedná o public property, není třeba mít getter a ani setter.
parent::getId_Supp()
Z jakého důvodu parent
a ne
self
/static
?
Potřeboval jsem předávát mezi presentery nějaké údaje(id a jméno presenteru odkud přijdu).
Proč zrovna v URL?