Zadejte hledaný výraz...

Stavba api – jak na jednotlivé funkce

Šimon Berka
verified
rating uzivatele
(11 hodnocení)
14. 2. 2014 00:46:27
Ahoj, zrovna se učím Symfony2 a stavím na tom api pro ovládání raspberry pi.
Potřebuju zjistit, jak nejelegantněji přiřadit různé funkce k daným parametrům URL, například
web.cz/api/system/a provede funkci functionA() a web.cz/api/system/b provede funkci functionB()
Prozatím to řeším tímhle způsobem:
if ($parameter == 'uptime') {
$rrr->apiUptime();
} elseif ($parameter == 'hostname') {
$rrr->apiHostname();
} elseif ($parameter == 'php') {
$rrr->apiPhp();
}
tzn /api/uptime provede funkci apiUptime() atp...
Funguje to, ale pro větší počet parametrů (50+) mi to nepřijde vhodné a nemám tušení jak to provést jinak, buď v čistém php (něco podobného jako if/elseif) nebo přes nějakou funkci symfony.
Díky za rady
14. 2. 2014 00:46:27
https://webtrh.cz/diskuse/stavba-api-jak-na-jednotlive-funkce#reply996495
Martin
verified
rating uzivatele
(62 hodnocení)
14. 2. 2014 01:17:43
V PHPku jde normálně $rrr->$parameter() a spustí to funkci, jejíž název odpovídá řetězci v proměnné $parameter. Takže by stačilo na začátek $parameter přidat "api" a zvětšit první písmeno a dělá to to co chceš.
14. 2. 2014 01:17:43
https://webtrh.cz/diskuse/stavba-api-jak-na-jednotlive-funkce#reply996494
James_Scott
verified
rating uzivatele
(7 hodnocení)
14. 2. 2014 01:52:48
Každopádně než používat milion elseifů, lepší asi bude switch / case
14. 2. 2014 01:52:48
https://webtrh.cz/diskuse/stavba-api-jak-na-jednotlive-funkce#reply996493
acidclick
verified
rating uzivatele
14. 2. 2014 08:33:54
14. 2. 2014 08:33:54
https://webtrh.cz/diskuse/stavba-api-jak-na-jednotlive-funkce#reply996492
Na to mas v Symfony routovanie. Vytvoris si controller s funkciami a nastavis mi url adresy. Kazda API funkcia bude jedna metoda controlleru, ziadne if else
Routing (current) - Symfony
http://symfony.com/doc/current/book/routing.html
14. 2. 2014 08:51:19
https://webtrh.cz/diskuse/stavba-api-jak-na-jednotlive-funkce#reply996491
Bacon
verified
rating uzivatele
(2 hodnocení)
14. 2. 2014 16:38:46
Jak píše cmelo, od toho je v Symfony routing, který funguje velmi skvěle.
web.cz/api/system/a pak může třeba volat funkci a v controlleru system v bundle ApiBundle.
14. 2. 2014 16:38:46
https://webtrh.cz/diskuse/stavba-api-jak-na-jednotlive-funkce#reply996490
kor3k
verified
rating uzivatele
7. 3. 2014 12:46:50
Ahoj, zrovna se učím Symfony2 a stavím na tom api pro ovládání raspberry pi.
Potřebuju zjistit, jak nejelegantněji přiřadit různé funkce k daným parametrům URL, například
web.cz/api/system/a provede funkci functionA() a web.cz/api/system/b provede funkci functionB()
do not reinvent the wheel:
JDare/ClankBundle
https://github.com/JDare/ClankBundle/blob/master/Resources/docs/RPCSetup.md
7. 3. 2014 12:46:50
https://webtrh.cz/diskuse/stavba-api-jak-na-jednotlive-funkce#reply996489
iTerminator
verified
rating uzivatele
(9 hodnocení)
7. 3. 2014 23:21:14
Napsal James_Scott;1056939
Každopádně než používat milion elseifů, lepší asi bude switch / case
Podle mě je to stejný, místo milionkrát else if bude mít milionkrát case, téměř žádnej rozdíl, obojí je však prasárna těžkého kalibru.
7. 3. 2014 23:21:14
https://webtrh.cz/diskuse/stavba-api-jak-na-jednotlive-funkce#reply996488
Šimon Berka
verified
rating uzivatele
(11 hodnocení)
8. 3. 2014 17:08:14
Napsal iTerminator;1065173
Podle mě je to stejný, místo milionkrát else if bude mít milionkrát case, téměř žádnej rozdíl, obojí je však prasárna těžkého kalibru.
a čím to teda nahradit? Rád se přiučím.
Díky
8. 3. 2014 17:08:14
https://webtrh.cz/diskuse/stavba-api-jak-na-jednotlive-funkce#reply996487
iTerminator
verified
rating uzivatele
(9 hodnocení)
8. 3. 2014 18:00:10
Co třeba call_user_func?
PHP: call_user_func - Manual
http://www.php.net/manual/en/function.call-user-func.php
8. 3. 2014 18:00:10
https://webtrh.cz/diskuse/stavba-api-jak-na-jednotlive-funkce#reply996486
Pro odpověď se přihlašte.
Přihlásit