Verschillende AJAX PHP scripts in 1 file of splitsen?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bryan De Baar

Bryan De Baar

27/02/2021 22:47:42
Quote Anchor link
Goede avond,


Ik heb een aantal PHP functies, die ik wil aanroepen met een AJAX call.
Nu zou ik wat advies willen wat jullie zouden doen.

Maak ik voor elke functie een aparte PHP file aan of gooi ik alles in een file en stuur ik met AJAX een parameter function mee en handel dit met een statement af welke functie iets moet retourneren?
 
PHP hulp

PHP hulp

17/04/2021 06:26:52
 
- Ariën -
Beheerder

- Ariën -

27/02/2021 23:46:16
Quote Anchor link
Wat jij makkelijk vindt werken... ;-)

Persoonlijk zou ik inderdaad een centraal bestand maken, waar je aan de hand van een GET-request het script uitvoert. Bijv. ajax.php?action=getList
 
Ad Fundum

Ad Fundum

01/03/2021 22:23:10
Quote Anchor link
Goede vraag. In jargon wil je weten of je wel of niet moet kiezen voor het Front Controller-ontwerppattroon. Hoewel veel applicaties en raamwerken het gebruiken, inclusief ikzelf, zijn er ook genoeg oplossingen die dat niet doen (vb. Mantis).

Met een Front Controller heb je één entree voor alle aanroepen. Je kunt hier code bundelen die op alle aanroepen van toepassing zijn. Hoe de PHP-functies centraal aangeroepen worden kan je hier centraal aanpassen.

Dat centraal aanroepen is ook meteen het nadeel. Want niet elk HTTP verzoek is hetzelfde. Sommige vragen om een andere uitvoer, zoals het teruggeven van binaire bestanden of met andere HTTP headers voor een download. Een ander nadeel is dat je achter een Front Controller een PHP router moet zetten die de juiste functies aanroept, die je als het meezit weer kan laden met een (on demand) autoloader. Maar eigenlijk is het niet nodig, omdat routing al voor je gedaan wordt door de webserver. In de link kan je al aangeven welk php-bestand gedraaid kan worden, met parameters. Vervolgens kan je de benodigde componenten zelf direct laden via include of require wat iets meer werk lijkt en lastiger te beheren.

Het netto effect met routing in PHP is je applicatie of site trager wordt dan nodig. Een ander effect is dat de discipline om op een bepaalde manier te werken wordt opgelegd en geholpen door de PHP Router (en de rest van het raamwerk). Sommige raamwerken schieten daarin helemaal door met Reflection of code in commentaar (docblocks).

Het gebruik van code in commentaarblokken is zelfs als standaard geïntroduceerd in PHP 8 met attributen:
https://www.php.net/manual/en/language.attributes.overview.php
Het is maar net wat je leuk vindt om zelf te ontdekken...
Gewijzigd op 01/03/2021 22:27:00 door Ad Fundum
 
Ivo P

Ivo P

02/03/2021 10:57:47
Quote Anchor link
Het framework waar ik veel mee werk, laat alles via index.php lopen.

Daarna wordt obv de url bepaald welke controller dit moet gaan oppakken.
Bijvoorbeeld "users" bij de url example.xxx/users

Dat geldt dan zowel voor "normale" aanroepen, als voor Ajax-aanroepen.

Vervolgens zoekt die controller weer uit welk type aanroep er was.

Dat kan op basis van de http-accept header (json) of eventueel zou je dat in de url kunnen meegeven.
Net hoe jij dat wilt doen.

Hoewel niet verplicht, groepeer ik dan alle ajax-requests (get en post apart)
Dit omdat je dan doorgaans geen html achtige output hoeft te geven maar wel een content-type json en json_encode().

Zeker als je pagina's vooral via ajax aanroepen vult, kan het goed zijn dat de afhandeling van de ajax-aanroepen veel uitgebreider is dan het simpelweg "toon de user beheerpagina"


Maar niets is verplicht natuurlijk.

Als jouw afhandeling is dat /users/get/123 een ajax aanroep is, maar /user/list/ niet en /users/filter/A* weer wel dan mag je dat best allemaal in 1 grote lijst achterelkaar zetten.

Ik groepeer graag.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.