Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 3 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Ziskanie globalnej premennej

Registrovaný: 26.12.06
Prihlásený: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 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
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 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ť).


Offline

Užívateľ
Užívateľ
Ziskanie globalnej premennej

Registrovaný: 26.12.06
Prihlásený: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok Napísal autor témyOffline : 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
Odpovedať na tému [ Príspevkov: 3 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. ziskanie javascriptovej premennej pre phpcko

v JavaScript, VBScript, Ajax

4

477

12.01.2010 18:11

djsulo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Získanie hostingu == získanie IP adresy?

v Webhosting a servery

3

529

15.06.2013 18:28

majky358 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. zistenie globalnej premenej

v PHP, ASP

3

468

15.04.2007 19:03

Gioel Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Získanie dát

v Pevné disky a radiče

12

974

11.08.2008 9:09

rooobertek Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Typo3 - ziskanie title

v Redakčné systémy

2

924

01.09.2010 23:57

Merlin_sk Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ziskanie neulozeneho dokumentu

v Ostatné programy

2

512

05.08.2009 11:22

ac.milan Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. [Java] Ziskanie zdrojaku stranky

v Assembler, C, C++, Pascal, Java

1

490

09.12.2008 8:18

p360t Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Java - ziskanie location ID

v Assembler, C, C++, Pascal, Java

0

319

12.03.2012 18:30

masloslayer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ziskanie dat z grafu

v Grafické programy

1

253

24.10.2013 14:30

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ziskanie textu DIV elementu

v JavaScript, VBScript, Ajax

2

708

14.09.2007 19:44

Bananslovak Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. získanie údajov zo stránky

v PHP, ASP

1

390

28.12.2008 18:48

suchy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. získanie pôvodnej hodnoty dokumentu

v JavaScript, VBScript, Ajax

1

394

29.10.2009 19:25

GoodWill Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ziskanie dat z HDD

v Pevné disky a radiče

3

780

12.10.2010 9:34

f4r0 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Získanie mena a hesla?!

v Ostatné programy

18

1147

25.03.2016 19:09

michalesku Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ziskanie zdrojoveho kodu z exe

v Assembler, C, C++, Pascal, Java

16

2309

15.02.2009 20:03

programator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. JAVA - získanie stringu zo súboru

v Assembler, C, C++, Pascal, Java

6

419

21.04.2014 23:34

XOLOO Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra