Ang. vad man har funktioner till:
Ett väl så viktigt skäl är att du bara har ett ställe att ändra på. Antag att du använder dig av smilies på fem sidor i din site. Varje gång du vill omvandla ev smilietecken i texten till bilder så skriver du: (Använder Peddas svar angående smilisar i exemplet.)
$text = str_replace("x(", "<IMG SRC=\"bilder/smilies/angry.gif\">", $text);
$text = str_replace("§e", "<IMG SRC=\"bilder/smilies/devilgrin.gif\">", $text);
$text = str_replace(":bire", "<IMG SRC=\"bilder/smilies/bire.gif\">", $text);
$text = str_replace(":f", "<IMG SRC=\"bilder/smilies/flirt.gif\">", $text);
$text = str_replace(":q", "<IMG SRC=\"bilder/smilies/quest.gif\">", $text);
$text = str_replace(":o", "<IMG SRC=\"bilder/smilies/redface.gif\">", $text);
$text = str_replace(":r", "<IMG SRC=\"bilder/smilies/shame.gif\">", $text);
$text = str_replace(":D", "<IMG SRC=\"bilder/smilies/biggrin.gif\">", $text);
$text = str_replace(";)", "<IMG SRC=\"bilder/smilies/wink.gif\">", $text);
$text = str_replace(":P", "<IMG SRC=\"bilder/smilies/blah.gif\">", $text);
$text = str_replace(":i", "<IMG SRC=\"bilder/smilies/idea.gif\">", $text);
$text = str_replace(":birp", "<IMG SRC=\"bilder/smilies/beergrin.gif\">", $text);
$text = str_replace(":(", "<IMG SRC=\"bilder/smilies/frown.gif\">", $text);
$text = str_replace(":)", "<IMG SRC=\"bilder/smilies/smile.gif\">", $text);
$text = str_replace(":x", "<IMG SRC=\"bilder/smilies/dead.gif\">", $text);
$text = str_replace(":h", "<IMG SRC=\"bilder/smilies/cool.gif\">", $text);
$text = str_replace(":stud", "<IMG SRC=\"bilder/smilies/stud.gif\">", $text);
$text = str_replace(":p", "<IMG SRC=\"bilder/smilies/tongue.gif\">", $text);
$text = str_replace(":l", "<IMG SRC=\"bilder/smilies/hrmpf.gif\">", $text);
$text = str_replace("§jr", "<IMG SRC=\"bilder/smilies/devel.gif\">", $text);
$text = str_replace(":e", "<IMG SRC=\"bilder/smilies/biggrin.gif\">", $text);
echo $text;
Varje gång du har en textmassa som kan innehålla smilies så skriver du hela rubbet ovan. Då har du denna textmassa instucken i annan kod lite här och där på minst 5 ställen (minst en gång per sida med smilisar). Koden blir fruktansvärt svårläst och vad tror du händer om du måste ändra sökväg till smilisarrna? Då måste du in och hitta vartenda ställe där du använt kodsnutten och ändra överallt.
Om du istället tar och stoppar in koden ovan i en funktion smile:
function smile ($text) {
//koden ovan
}
och lagrar funktionen i filen funcs.php, så kan du inkludera funcs.php i de fem filer som använder smilies och skriva
echo smile('Min text med \:) smilisar i \:e');
Dels är detta betydligt lättare att läsa, dels behöver du bara ändra i smile, dvs på ett ställe om sökvägen ändras.
Att upprepa kod är aldrig någon höjdare... Risken att man glömmer uppdatera åtminstone någonstans är överhängande. Särskilt om man gör uppdateringen säg efter en vecka eller längre sedan man senast tittade på koden.
I funktioner kapslar man in kod till ett namngivet "block" som kan användas om och om igen. I klasser (kan) man kapsla in både funktioner och variabler som hör ihop med ett visst koncept.
RED: Förtydligande