Autor Zpráva
Iru
Profil *
Mám sadu různých funkcí, každá má svůj název. Název funkce, kterou z nich potřebuju právě volat mám uložený v proměnné a teď mi jde o to, jak pomocí této proměnné volat požadovanou funkci...

Takhle to vypadá:

function RizeniZobrazeni($NazevFunceZobrazenehoForm){
		$this -> NazevFunkce = $NazevFunceZobrazenehoForm; 
		$this -> ZobrazenyForm = $his -> $NazevFunkce();
		
		return $this -> NazevFunkce;
		
	}


jenže tento zápis mi píše chybu: Fatal error: Method name must be a string in, takže je to asi špatně, prosím o radu, jak to řešit, děkuji moc...
Majkl578
Profil
Fungovalo by to, kdyby proměnná $NazevFunkce byla definovaná a obsahovala platný název a kdyby jsi použil definovaný objekt (ne $his, ale $this).
Iru
Profil *
$NazevFunkce obsahuje řetězec 'zakladni_formular', což je název funkce, která existuje. $his byl překlep, kterého jsem si nevšimla, mám to opraveno, ale i tak to požadovanou funkci nevolá....
Majkl578
Profil
Trvám si na tom, co jsem řekl. Daná proměnná v této funkci/metodě neexistuje.
Iru
Profil *
mám tuto proměnnou definovanou v dané třídě jako public $NazevFunkce;

a když z výše uvedené funkce smažu řádek
$this -> ZobrazenyForm = $his -> $NazevFunkce();
a nechám jen:

function RizeniZobrazeniFormulareProduktu($NazevFunceZobrazenehoForm){
		$this -> NazevFunkce = $NazevFunceZobrazenehoForm; 
			
		return $this -> NazevFunkce;
		
}


tak mi funkce vrátí správnou hodnotu proměnné

Jak ji mám tedy definovat?
Majkl578
Profil
V tom případě se k ní přistupuje takto: $this->NazevFunkce.
Tudíž to, čeho chceš docílit: $this->ZobrazenyForm = $this->{$this->NazevFunkce}();.
Celé mi to přijde dost podivné a obávám se, že jde o chybu v oo návrhu.
Iru
Profil *
díky, ano, to je to, co jsem potřebovala...

chtěla jsem se vyhnout konstrukci switch

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: