Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET. Zároveň využij akci až 30 % zdarma při nákupu e-learningu - Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
discount 30 + hiring
Avatar
Lava
Člen
Avatar
Lava:3.2.2020 14:33

Mám kód, v ktorom by sa mala zavolať príslušná metóda vybraného controllera, v závislosti od toho, čo sa nachádza v $_GET['action']

Zkusil jsem: Tu je kód, ktorý som skúšal

if(!empty($_GET['action'])) {
                    $methodName = $_GET['action'];
                    //var_dump($methodName);exit;
                    $myController->methodName;
                }

$methodName mi síce dá hodnotu z $_GET, ktorú potrebujem, vo forme stringu, avšak neviem to jaksi tak "poskladať", aby z toho niečo rozumné vzišlo...

Chci docílit: Routing na mojom projekte funguje štýlom www.adresa.cz/index.php?….

Na základe toho action=newUser potrebujem, aby keď je táto hodnota zadaná, aby sa mi zavolalo
$controller->newUser($params);
Neviem tam však tú hodnotu z toho $_GET dostať, aj keď ju tam dám ako string, ešte za to potrebujem zátvorky a prípadne do nich doplniť nejaké $params. Jak na to? Funkciou eval()?

Odpovědět
3.2.2020 14:33
Aspartám, sacharín, to je môj vitamín
Avatar
Odpovídá na Lava
Martin Konečný (pavelco1998):3.2.2020 15:17

Ahoj, můžeš to zavolat jednoduše přímo

$methodName = $_GET["action"];
$myController->$methodName(... parametry);

nebo skrze call_user_fun­c_array().

$methodName = $_GET["action"];
call_user_func_array(array($myController, $methodName), array(... parametry));

Edit: Ten druhý způsob je fajn, když máš pole těch parametrů, tzn. nevíš předem přesně, kolik jich bude. V prvním případě je to klasické volání, tedy každý parametr musíš vypsat ručně. V druhém případě můžeš mít parametry v poli a ta funkce call_user_func_array je předá té metodě.

Editováno 3.2.2020 15:18
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
3.2.2020 15:17
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Lava
Člen
Avatar
Lava:3.2.2020 15:23

Človeče, funguje to! Nechápem prečo mi to nešlo, dal by som ruku do ohňa za to, že som to mal navlas rovnako. Ďakujem

Nahoru Odpovědět
3.2.2020 15:23
Aspartám, sacharín, to je môj vitamín
Avatar
Odpovídá na Lava
Martin Konečný (pavelco1998):3.2.2020 16:00

Podle ITNetwork nemám dostatečný skill na hodnocení komentářů, tak to aspoň napíšu textem - není zač :D

Nahoru Odpovědět
3.2.2020 16:00
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:3.2.2020 21:24

Ja bych predevsim ve funkci nepracoval s $_GET ale $_get nebo $get, $req, treba.

Martin Konečný (pavelco1998) - je treba udelat si tady test na php.

 
Nahoru Odpovědět
3.2.2020 21:24
Avatar
Nahoru Odpovědět
3.2.2020 22:23
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Lava
Člen
Avatar
Odpovídá na Peter Mlich
Lava:4.2.2020 6:25

A prečo? Aky je v tom rozdiel?

Nahoru Odpovědět
4.2.2020 6:25
Aspartám, sacharín, to je môj vitamín
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:4.2.2020 10:23

Rozdil je ve zpusobu uvazovani. Je treba se vyhnout pouzivaji globalnich promennych.

 
Nahoru Odpovědět
4.2.2020 10:23
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.