Gegevens: |
Geschreven door: |
nemesiskoen |
Moeilijkheidsgraad: |
Gemakkelijk |
Hits: |
6406 |
|
|
|
|
PEAR codeer stijl
1. Inleiding
2. Verschil
3. Regels en voorbeelden
4. Besluit
top
1. Inleiding
PEAR wat staat voor PHP Extension and Application Repository is een project met als doel de bruikbaarheid en betrouwbaarheid van PHP te vergroten.
PEAR heeft enkele standaarden gestelt qua codeerstijl genaamd de PEAR-codeerstijl (vrij logisch).
Dit houd in dat ze een duidelijke manier van coderen proberen aan te geven zodat ook derden jou code begrijpen.
Je hoeft deze regels niet te volgen (ik geef toe dat ik enkele van deze regels soms een klein beetje anders doe) maar het helpt je wel vooruit met het begrijpen van je eigen code net zoals commentaar dit doet.
Ik ga in dit artikel eerst een voorbeeld geven van de verschillen tussen een slordige stijl en de PEAR stijl en beschrijven welke standaarden er zijn gesteld.
top
2. Verschil
Stel ik heb een keuzestructuur.
Waarbij ik een variabele ga nakijken op zijn waarde en dan acties ondernemen.
Ik kan dit zo schrijven:
<?php
$var=5;
if(isset($var)&&is_numeric($var)){
if($var==5){ echo "var is 5"; }
else { echo "var is niet gelijk aan 5";
doeIets();
doetNogiets();
}
?>
|
Nu snap je waarschijnlijk al wat ik bedoel met onduidelijkheid.
Er zit namelijk ook een syntaxis fout in dit stukje code, om deze te achterhalen heb je meer moeite mee dan om bijvoorbeeld een stukje dat er zo uit ziet de fout te achterhalen.
<?php
$var=5;
if((isset($var)) && (is_numeric($var))) {
if($var==5)){
echo "var is 5";
} else {
echo "var is niet gelijk aan 5";
doeIets();
doetNogiets();
}
?>
|
Hierboven is dus alles gedaan volgens de PEAR codeer stijl.
Nu zie je ook direct dat je een '}' bent vergeten.
De regels hiervan ga ik in het volgende puntje opsommen en duidelijk maken met een voorbeeld.
top
3. Regels en voorbeelden
Inspringen en witruimte
Een code is zowiezo duidelijker als je inspringt.
Bekijk volgende code.
<?php
switch($var){
case 1:
doeiets();
break;
case 2:
doeietsAnders();
break;
default:
doeNiets();
break;
}
//beter:
switch($var){
case 1:
doeiets();
break;
case 2:
doeietsAnders();
break;
default:
doeNiets();
break;
}
?>
|
Controlestructuren
Hieronder volgt een voorbeeld van hoe (volgens de PEAR-codeerstijl) elke controlestructuur moet afgehandeld worden.
<?php
/* if statements */
if((voorwaarde1) && (voorwaarde2)) {
//je moet elke voorwaarde tussen haakjes zetten
doeIets();
}
/* if else statements */
if((voorwaarde1) && (voorwaarde2)) {
doeIets();
} else {
doeIetsAnders();
}
/* if elseif else statements */
if((voorwaarde1) && (voorwaarde2)) {
doeIets();
} elseif((voorwaarde3) || (voorwaarde4)) {
doeIetsAnders();
} else {
doeNogIetsAnders();
}
/* switch statements */
switch($variabele) {
case 1:
doeIets();
break;
case 2:
doeIetsAnders();
break;
default:
doeNiets();
break;
}
?>
|
Functies
Een functie start zijn accolades onder het woord function in tegenstelling tot 'if', 'else', 'elseif' en 'switch'.
Een 'if' binnen een functie start zijn accolades wel op de zelfde regel.
<?php
function eenFunctie()
{
//acties
if($iets) {
//meer acties
}
}
?>
|
Mocht een functie argumenten ontvangen, is het best om deze volgens een logische manier te ordenen (voorbeeld1).
Ook moet je argumenten die een standaardwaarde bevatten achteraan zetten (voorbeeld2).
<?php
//voorbeeld1
function mijnFunctie($a, $b, $c)
{
return $a + $b + $c;
}
//voorbeeld2
function mijnTweedeFunctie($a, $b, $c=6)
{
return $a + $b + $c;
}
?>
|
Ook is het belangrijk dat functies iets retoruneren (waarde terugsturen).
Of ze sturen een resultaat terug, of ze sturen "TRUE" of "FALSE" terug (een booleaanse functie).
<?php
function geef_som_weer($a, $b) {
if((is_numeric($a)) && (is_numeric($b)){
echo $a + $b;
return TRUE;
}
else {
return FALSE;
}
}
?>
|
top
4. Besluit
Zelf ben ik er van overtuigd dat als je bovenstaande regels volgt je veel minder moeite zal hebben met debuggen.
Ik zeg niet je ze moet volgen maar het helpt je wel.
Ikzelf volg het grootste deel van de regels (een accolade op een andere regel hier en daar komt wel eens voor).
top
|
|
|