login  Naam:   Wachtwoord: 
Registreer je!
 Forum

return of echo of iets anders in function

Offline dieterke - 12/06/2010 09:59
Avatar van dieterkeNieuw lid heey

ik heb een vraagje in verband met de teruggaves van waarden

stel ik heb volgende functies

  1. function MaakTabelCel($tekst)
  2. {
  3. echo "<td>" . $tekst . "</td>";
  4. }
  5.  
  6. function MaakLink($href, $titel)
  7. {
  8. echo "<a href='".$href."'>".$titel."</a>";
  9. }


en ik wil deze link gebruiken in een tabel-cel:
  1. MaakTabelCel(MaakLink("index.php", "home"));


dan lukt dit niet, want dan maakt die de link vooraleer die de functie MaakTabelCel aanroept
gegenereerde code:
  1. <a href='index.php'>home</a> <td></td>


dit probleem zou ik kunnen oplossen met een return statement te maken van de echo in MaakLink

maar dan moetek in de tabel MaakLink gebruiken, en niet in de tabel echo MaakLink

nu is het niet de bedoeling dat naargelang in welk stukje html ik dat moet doen
het was net de bedoeling dat ik met MaakLink gewoon altijd direct een link kon maken

iemand een idee?

12 antwoorden

Gesponsorde links
Offline MiST - 12/06/2010 10:10
Avatar van MiST Lid Ik denk dat het heel erg belangrijk is om functionaliteiten gescheiden te houden.

Returns geven iets terug in de vorm van een resultaat. Echo print iets naar je scherm (vergelijkbaar met System.out.print() in Java als je dat iets zegt).

Vandaar dat je methode maakLink (en ik zou ook ineens aanraden om methodenamen met een kleine letter te doen beginnen). Enkel bedoeld is om de tekst te maken, en niet weer te geven. Dus, return statement.

Daarna kan je die weergeven in je HTML met een echo. Er is trouwens een heel handige short tag daarvoor. <?= $var; ?> is net hetzelfde als <?php echo $var; ?>

Als je dan je PHP een beetje gebruikt als templating language, werkt dat wel prettig.
Offline dieterke - 12/06/2010 10:17
Avatar van dieterke Nieuw lid niet iedere server ondersteunt de shorttags, dus ik gebruik die liever niet .. kleine letters klopt inderdaad, foutje van mij, maar dat lost mijn probleem niet op
de bedoeling van die functie was dat ik door ze op te roepen automatisch een link op die plaats kreeg, nu is er dus het probleem dat als ik die functie meegeef binnen een andere functie dit niet gaat lukken, en als ik er een return van maak ik altijd moet echo'en, want dus niet de bedoeling was
de specifieke bedoeling van de functie:
aanroepen zonder andere statements -> op die plaats in de code komt er een link
aanroepen binnen een andere functie -> ook binnen die andere functie op de juiste plaats een link
Offline Martijn - 12/06/2010 12:32
Avatar van Martijn Crew PHP De short tag wordt toch wel op alle fatsoenlijke servers ondersteund, ik gebruikt het overal en ben er nog nooit een probleem van tegen gekomen.
Offline dieterke - 12/06/2010 12:34
Avatar van dieterke Nieuw lid simpele voorbeeld: x10hosting, wamp op mijn localhost enz ...
maar mijn probleem blijft hetzelfde, short tags of niet
Offline Martijn - 12/06/2010 12:50
Avatar van Martijn Crew PHP echo functienaam($input,$input);
en dan in je functie return ipv echo
Offline dieterke - 12/06/2010 12:54
Avatar van dieterke Nieuw lid dat is niet de bedoeling zoals je mss al gelezen hebt
wat ik wil is onafhankelijk van waar in je code je dit gebruikt je automatisch een link op die plaats krijgt
ik wil dus niet afhankelijk zijn van waar in de code, terwijl dat bij dat van jou wel is
dat idee had ik trouwens zelf ook al gevonden (zie mijn originele vraag)

want nu bennek afhankelijk van waar ik het gebruik --> in een andere functie kan ik het gewoon gebruiken, als ik deze gewoon oproep moet ik steeds echo gebruiken, als ik dan functies in functies in functies wil gebruiken moet ik misschien echo gebruiken, mss niet, en dan weer genest levert dat iets anders op e.d. dus ik zoek daar een oplossing voor
Offline TotempaaltJ - 13/06/2010 01:18
Avatar van TotempaaltJ PHP interesse Wat nou als je voor een extra parameter vraagt, en deze geef je een standaardwaarde... Bijvoorbeeld: $echo = True. En dan doe je daar een ifje op? 
Offline Kwarde - 13/06/2010 07:22 (laatste wijziging 13/06/2010 07:23)
Avatar van Kwarde Nieuw lid Verwijderd.
Ik had iets verkeerd gelezen, sorry
Offline dieterke - 13/06/2010 09:33
Avatar van dieterke Nieuw lid totempaaltje dat is nu net hetgeen ik als tussenoplossing bedacht heb 
tog bedankt voor het idee
zo lijkt het mij wel te doen, ik vraag me alleen af of dit niet anders kon, vandaar

Offline TotempaaltJ - 13/06/2010 11:54 (laatste wijziging 13/06/2010 11:54)
Avatar van TotempaaltJ PHP interesse Voor zover ik weet is dat niet mogelijk.
Offline Kwarde - 13/06/2010 12:22 (laatste wijziging 13/06/2010 12:44)
Avatar van Kwarde Nieuw lid Maar kan je niet gewoon beter ipv 'return' gebruiken, en dan wel weergeven met ECHO ?
Zoiets dus:

  1. function link($url, $title)
  2. {
  3. return "<a href=".$url.">".$title."</a>";
  4. }
  5.  
  6. echo link("http://www.google.nl", "Google");


Net zo handig toch :S
Offline Stijn - 13/06/2010 13:23
Avatar van Stijn PHP expert echo in een functie is not done! Oftewel voert je functie code uit zonder iets terug te geven (dat is dan een procedure) of je voert code uit in je functie en geeft dan een waarde terug. Zo kom je nooit in de problemen met jou probleem.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.213s