Functie slechts één keer verklaren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Donald Boers

Donald Boers

06/05/2018 10:43:01
Quote Anchor link
Bestaat de mogelijkheid een TRUE of FALSE functie slechts één keer te declareren en de verkorte uitkomst elders in een pagina te gebruiken. Ik werk namelijk aan een update pagina/formulier en gebruik momenteel op wel 5 of 6 plekken het volgende type IF functies om te bepalen welke content wel dan niet getoond moet worden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php IF ( $query_string === 'opening_dates' || $query_string === 'collage'  || $query_string === 'call_to_action' ): ?>
// Toon content of niet
<?php endif; ?>


Hetgeen het een en ander er niet overzichtelijker op maakt. Het zou dus handig zijn wanneer ik een dergelijk soort functie maar een keer hoef te declareren en vervolgens elders in de pagina iets zou kuunen gebruiken als:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
IF ($query_string)


Alvast bedankt voor eventuele reacties
 
PHP hulp

PHP hulp

23/04/2024 12:47:52
 
Thomas van den Heuvel

Thomas van den Heuvel

06/05/2018 13:25:25
Quote Anchor link
Als je dit in allerlei losse onderdelen onderbrengt, dan denk ik zelfs dat dat hele if-statement niet meer nodig is, het onderdeel zelf identificeert immers al op een of andere manier wat er getoond moet worden.

Maar voordat deze hele discussie te abstract wordt is het misschien handig om met concrete voorbeelden te werken.

Omdat je het in een ander draadje al hebt over een database veronderstel ik dat voor het bovenstaande ook een database ingezet kan worden.

Misschien is het gewoon een kwestie van even een knop omgooien, ik weet namelijk nog steeds niet goed wat ik mij bij het bovenstaande moet voorstellen. Zijn dit een soort van artikelen? Dan ligt het voor de hand om een tabel genaamd "artikelen" te maken en hier titel + text + wat je nog meer wilt bijhouden in op te slaan. En zelfs al betreft het geen artikelen maar is het soortgelijke content kan het vervolg van dit verhaal, die uitgaat van een soort van lopende tekst, illustratief zijn voor een mogelijke aanpak.

Vervolgens heb je een PHP-script nodig om deze artikelen uit te lezen, bijvoorbeeld artikel.php. En dan moet je nog op een of andere manier communiceren welk artikel dit precies moet zijn. Dit zou je als parameter mee kunnen geven in het script: artikel.php?id=12. Hiermee instrueer je het script dat je in artikel 12 geïnteresseerd bent. Code in dit script zorgt voor het ophalen + weergeven van de bijbehorende data (die dus identificeerbaar moet zijn met een uniek volgnummer).

Dan wil je dit misschien nog een zoekmachine vriendelijke URL geven zodat een externe aanroep van /nieuws/12/dit-is-een-artikel intern wordt vertaald naar een aanroep van /artikel.php?id=12.

Dit zijn echter allerlei zaken die in afzondering behandeld kunnen worden. Het lijkt allemaal nogal overweldigend als je in één ruk naar een eindresultaat wilt, maar als je dit in stappen opdeelt (volgens een soort van plan :)) valt het meestal wel mee.

Het script "artikel.php" blijft dus inhoudelijk altijd hetzelfde, maar kan dus door de variabele "id" in de URL, die met verschillende waarden aangeroepen kan worden, hergebruikt worden om verschillende artikelen te tonen. De opbouw van de pagina is verder precies hetzelfde - het enige wat verschilt is de (altijd wisselende) content (uit de database).

Misschien kun je dus iets soortgelijks toepassen op jouw probleem waarbij je dus een soort van indeling maakt in de content en je een script hebt die deze verschillende stukken content op eenzelfde manier kan serveren. Al dat soort if-statements kunnen dan dus verwijderd worden omdat je een andere uniforme manier hebt om die dynamische content aan te spreken.
Gewijzigd op 06/05/2018 13:27:47 door Thomas van den Heuvel
 
Donald Boers

Donald Boers

06/05/2018 16:51:42
Quote Anchor link
@Thomas van den Heuvel. Het gaat niet on vriendelijke urls of wat dan ook. Het gaat om een update form in de CMS voor een sectie, genaamd widgets. Niet iedere widget gebruikt de zelfde velden uit de database en toch wil ik graag het zelfde formulier gebruiken voor de verschillende widgets. Vandaar dat ik die verschillende IF statement gebruik. Stel je voor. Een widget heeft een foto en de andere widgets niet. Dan gebruik ik dus de volgend IF statement om te bepalen of de huidige foto getoond moet worden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php IF ( $query_string == 'opening_dates' || $query_string == 'collage'  || $query_string == 'call_to_action' ): ?>
/<div class="col-md-3">
    <img src="/../images/widget_photos/thumbnails/<?= $details['photo']; ?>" class="img-responsive">
</div>
<?php endif; ?>


Op dat moment krijg je namelijk ook zoiets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<div class="<?= ( $query_string == 'opening_dates' || $query_string == 'collage'  || $query_string == 'call_to_action' ) ? 'col-md-6' : 'col-md-9'?>">Title/Content</div>

Dus niet alleen voor wat er getoond wordt maar ook voor hoe het wordt vertoond gebruik ik dus die IF statements. Dus de vraag blijft, bestaat de mogelijkheid ome een variabele te declareren op basis van een IF statement
Gewijzigd op 06/05/2018 16:52:51 door Donald Boers
 
Thomas van den Heuvel

Thomas van den Heuvel

06/05/2018 17:32:53
Quote Anchor link
Het gaat inderdaad niet om vriendelijke URLs maar om een werkwijze waarbij je iets generiek(s) maakt. En als dit een complex/uitgebreid proces is dat je dit in logische stappen / deelproblemen opdeelt.

Dit is volgens mij het tweede topic wat over hetzelfde gaat.

Er zijn meerdere aanpakken mogelijk: of je maakt de hele boel generiek waarbij je vertelt uit wat voor collectie elementen een widget bestaat, of je spant een soort van ruimte op die voor alle situaties past (dus als je in 1 widget 2 tekstvelden gebruikt en in een andere widget 2 foto's dan maak je gewoon een formulier waarin 2 tekstvelden en twee uploadvelden zitten ofzo zodat al deze info in theorie in de configuratie van één widget opgeslagen kan worden) en zet dan per widget apart dingen aan of uit met vinkjes ofzo, meerdere oplossingen mogelijk.

De vraag is echter of dat echt de moeite is omdat het maar om 16 records gaat?
Gewijzigd op 06/05/2018 17:33:10 door Thomas van den Heuvel
 



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.