| | |
| Stránka: 1 z 1
| [ Príspevkov: 3 ] | |
Autor | Správa |
---|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal emer: 20.09.2010 18:23 | |
|
Zdravim,
v rámci funkcie potrebujem niekde v strede obsah premennej mimo funkcie.
logické je použiť zápis Kód: global $Premenna; to by bolo v poriadku, lenže ja vopred neviem, čo za premennú to je. tak som si srpavil funkciu getglobal Kód: function getglobal($Varname){ if(substr($Varname, 0, 1) == '$') $Varname = substr($Varname, 1); preg_match('#([a-zA-Z0-9]+)#', $Varname, $Var); global ${$Var{0}}; if(preg_match_all('#\[(.*?)\]#', $Varname, $Matches)){ $Temp = ${$Var{0}}; foreach($Matches{1} as $Key){ $Temp = $Temp{$Key}; } }else{ $Temp = $Var; } return $Temp; } to by bolo tiež v poriadku. funguje zápis Kód: getglobal('$Premenna'); getglobal('$Pole[index]'); getglobal('$Pole[index][index2]'); lenže nefungujú nasledujúce Kód: getglobal('$Trieda->Premenna'); getglobal('$Trieda->Funkcia()'); getglobal('$Trieda->SubTrieda->Funkcia()');
Viete mi prosím pomôcť? Alebo na to celé existuje nejaký lepší spôsob? Ďakujem
_________________ Sorry za prelkepy |
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | Napísal chrono: 20.09.2010 19:24 | |
|
A skúšal si $Trieda = getglobal('$Trieda'); a potom $Trieda->Premenna ... ? Inak uniká mi, prečo nemôžeš v tej funkcii použiť priamo global. Ak tam máš kód, ktorý to naozaj neumožňuje, tak to máš urobené zle a pravdepodobne by si to mal rozdeliť do viacerých funkcií (aby každá funkcia robila len jedinú činnosť).
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal autor témy emer: 21.09.2010 15:21 | |
|
no to bude fungovat, ale problem je, ze ja potrebujem uz navratovu hodnotu z toho $Trieda->Premenna alebo $Trieda->Funkcia()
skúšal som to rovnakým spôsobom ako je riešené to pole, teda
Kód: preg_match_all('#\->([a-zA-Z0-9\(\)]*)#', $Varname, $Matches);
$Temp = ${$Var{0}};
foreach($Matches{1} as $Key) $Temp = $Temp->{$Key}; lenže pri '$Trieda->Funkcia()' mi to hodí chybu Kód: Notice: Undefined property: trieda::$Funkcia() funguje to iba ak volam premennu, napr. $Trieda->Premenna EDIT:ok, ak nahradím cyklus Kód: foreach($Matches{1} as $Key){ if(strpos($Key, '(') === FALSE){ $Temp = $Temp->{$Key}; }else{ $Key = substr($Key, 0, -2); $Temp = $Temp->$Key(); } } tak to funguje, ale funkcie musia byť bez parametrov. to mi myslím nevadí, nepotrebujem parametre. pokiaľ niekto ešte na to nájde riešenie + lepšie od môjho, jeho kód je vítaný chrono: ešte ten dodatok, potrebujem to kvôli potrebám jednej časti mini "parseru", a nechcem používať frameworky EDIT 2:alebo s evalom, to ma až teraz napadlo. tam môžem už trtnúť hocičo Kód: function getglobal2($Varname){ preg_match('#([a-zA-Z0-9]+)#', $Varname, $Var); global ${$Var{0}}; eval('$Temp = '.$Varname.';'); return $Temp; }
verzia s evalom je dokonca o 24% rýchlejšia
(priemer z 10 merani po 100 000 opakovani na $Varname = '$Trieda->Funkcia()'; )
_________________ Sorry za prelkepy |
|
| Stránka: 1 z 1
| [ Príspevkov: 3 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| ziskanie javascriptovej premennej pre phpcko v JavaScript, VBScript, Ajax | 4 | 477 | 12.01.2010 18:11 djsulo | | Získanie hostingu == získanie IP adresy? v Webhosting a servery | 3 | 529 | 15.06.2013 18:28 majky358 | | zistenie globalnej premenej v PHP, ASP | 3 | 468 | 15.04.2007 19:03 Gioel | | Získanie dát v Pevné disky a radiče | 12 | 974 | 11.08.2008 9:09 rooobertek | | Typo3 - ziskanie title v Redakčné systémy | 2 | 924 | 01.09.2010 23:57 Merlin_sk | | ziskanie neulozeneho dokumentu v Ostatné programy | 2 | 512 | 05.08.2009 11:22 ac.milan | | [Java] Ziskanie zdrojaku stranky v Assembler, C, C++, Pascal, Java | 1 | 490 | 09.12.2008 8:18 p360t | | Java - ziskanie location ID v Assembler, C, C++, Pascal, Java | 0 | 319 | 12.03.2012 18:30 masloslayer | | ziskanie dat z grafu v Grafické programy | 1 | 253 | 24.10.2013 14:30 shiro | | ziskanie textu DIV elementu v JavaScript, VBScript, Ajax | 2 | 708 | 14.09.2007 19:44 Bananslovak | | získanie údajov zo stránky v PHP, ASP | 1 | 390 | 28.12.2008 18:48 suchy | | získanie pôvodnej hodnoty dokumentu v JavaScript, VBScript, Ajax | 1 | 394 | 29.10.2009 19:25 GoodWill | | Ziskanie dat z HDD v Pevné disky a radiče | 3 | 780 | 12.10.2010 9:34 f4r0 | | Získanie mena a hesla?! v Ostatné programy | 18 | 1147 | 25.03.2016 19:09 michalesku | | ziskanie zdrojoveho kodu z exe v Assembler, C, C++, Pascal, Java | 16 | 2309 | 15.02.2009 20:03 programator | | JAVA - získanie stringu zo súboru v Assembler, C, C++, Pascal, Java | 6 | 419 | 21.04.2014 23:34 XOLOO |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|