Zelf functies schrijven

Door Frank Nietbelangrijk, 3 jaar geleden, 16.685x bekeken

Deze tutorial legt uit hoe je zelf functies kunt schrijven binnen PHP.

Gesponsorde koppelingen

Inhoudsopgave

  1. Inleiding
  2. Mijn eerste functie
  3. Variabelen en functies
  4. Parameters aan functies meegeven
  5. Een waarde teruggeven

 

Er zijn 9 reacties op 'Zelf functies schrijven'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Wouter J
Wouter J
3 jaar geleden
 
Goede beginnerstutorial, toch mis ik een aantal dingen en wat waarschuwingen:

Hoofdstuk 1
Ik zou zelf beginnen met het laten zien dat PHP eigenlijk bijna volledig opgebouwd is uit functies. Daarna kun je over gaan op het zelf maken van een functie en wat voor voordelen dat bied.

Verder is het argument van if/else statements niet geweldig. Dat kun je namelijk ook met functies hebben en is totaal niet erg.

Hoofdstuk 2
Een echo in de functie? Oké, goed voor in de intro als je maar in het hoofdstuk daarop uitlegt dat het niet zo hoort en dat je met return statements moet werken.

Ik zou ook vanaf hier de volgorde anders doen. Ik het zo doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
Intro
Functie syntax + praktijk
Return statements
Global variabelen
Parameters

Hierdoor heb je de hele tijd de structuur: 'logisch maar fout' en het hoofdstuk daarna 'verbetering'. Dat is vaak een goede methode om mensen iets te leren.

Hoofdstuk 3
Introduceer even het begrip 'scope'. Dat is toch wel een cruciaal begrip als je over functies praat.

Geef duidelijk aan dat het werken met globals niet de way to go is, het maakt je functies veel slechter, aangezien je vanuit binnenuit de buitenkant kan veranderen en je dus ook vanaf de binnenkant de buitenkant moet weten.

Hoofdstuk 4
Ik mis hier het stukje over 'pass by reference'.

Optionele parameters hoeven niet per se als laatst te komen, het is wel aangeraden.

Merk ook op dat je veel te snel over dat onderwerp heen praat. Waarom is hij nu opeens optioneel? Wat stelt die =0 voor? Heb het even over de default value die je zo kunt instellen.

Hoofdstuk 5
Geef even aan dat na een return de functie executie stopt. Het is dus ook een mooie manier om bij een fout niet verder te gaan met je script. En je kunt dan ook mooie dingen als dit doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
function foo($a)
{

    if (false !== strpos($a, 'bar')) {
        return $a;
    }

    return 'bar';
}


// ipv
function foo($a)
{

    if (false !== strpos($a, 'bar')) {
        return $a;
    }
else {
        return 'bar';
    }
}

?>


Dingen die ik mis
Ik mis een hoofdstuk over functioneel programmeren. Dat is toch wel een mooie stroming en daar hoort toch wel wat over geschreven te worden in een functie tutorial.
Eddy E
Eddy E
3 jaar geleden
 
0 +1 -0 -1
Leuke en duidelijke tutorial.
Wat Wouter ook zegt: echo niets in de functie zelf.
Wouter raad aan het eerst fout te laten zien en daarna te verbeteren.

Als leerkracht denk ik ook wel wat te weten over hoe mensen/kinderen iets nieuws leren: gelijk goed doen, maar met kleine stapjes opbouwen. Maar nooit wat 'fouts' aanbieden.

Dus die echo ."\n" zou ik overal weghalen. Gewoon gelijk naar de return. Leg dan maar uit wat ze met die return moeten doen.

Voor de rest prima en duidelijk. Ik mis het iets moeilijkere (&$var bijvoorbeeld), maar dat komt wellicht nog?
Frank Nietbelangrijk
Frank Nietbelangrijk
3 jaar geleden
 
0 +1 -0 -1
hmm oke de tijd is nu om maar ik zal kijken of ik jullie punten er in kan brengen. Bedankt.
Victor -
Victor -
3 jaar geleden
 
0 +1 -0 -1
Misschien kun je ook achter iedere echo zetten wat hij returnt. bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function mijnfunctie($kopie) {
    echo $kopie."\n";
    
    // probeer de waarde te veranderen
    $kopie = 5;
}

 
$nr = 2;
mijnfunctie($nr); // Geeft: 2
echo $nr."\n"; // Geeft: 2

?>
Chris Niese
Chris Niese
2 jaar geleden
 
0 +1 -0 -1
Ik heb een werkende formhandler maar als ik het email adres verander werkt het niet meer?
Kan ik hierover advies vragen?
- SanThe -
- SanThe -
2 jaar geleden
 
1 +1 -0 -1
Ja, op het forum.
Niet hier.
Chris Niese
Chris Niese
2 jaar geleden
 
0 +1 -0 -1
Onderstaand formhandler werkt maar niet als ik het email adres verander? wat gaat er fout?
==================================================
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$form_error
= false;

if (isset($_POST['Name'])) {
 // information can also be placed in database
 $Name = $_POST['Name'];
 $Surename = $_POST['Surename'];
 $Email = $_POST['Email'];
 $Comments = $_POST['Comments'];
 $headers  = 'MIME-Version: 1.0' . "\r\n";
 $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
 $headers .= 'From: ' . $Email . "\r\n";
if (@mail('user@example.com ','information coming from Form3.htm','Name: '.$Name.'<br>Surname: '.$Surename.'<br>Comments: '.$Comments,$headers)) {
header('Location: http://www.userexample.com/Thank_you_message3.html');
}
else {
$form_error = true;
}
}

 ?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>FormHandler3</title>
</head>
<body>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if($form_error){echo '<p>Sorry, something went wrong with the form, please try again later.</p>';}
  ?>

</body>
</html>
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Php knipper
php knipper
2 jaar geleden
 
1 +1 -0 -1
@Chris Niese
Gelieve de vragen te stellen in het forum dus hier "http://www.phphulp.nl/forum/newtopic/30/".
--> ik wil wel antwoorden maar in het forum is het gemakkelijker dan hier bij de tutorials.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. Inleiding
  2. Mijn eerste functie
  3. Variabelen en functies
  4. Parameters aan functies meegeven
  5. Een waarde teruggeven

Labels

PHP tutorial opties