Cursussen/Courses Codesnippets     Top 
PHP - Functies


1. Eigen functies
Met het gereserveerde woord “function” kan je een functie definiëren. Je kiest een naam en je vult de statements in tussen de accolades.
De functie kan je aanroepen in een programma door het opgeven van de functienaam en twee haakjes. Je kunt een functie meermaals aanroepen op verschillende plaatsen in je programma.
Je moet geen terugkeerwaarde opgeven maar als je dat toch doet dan kan het resultaat van de functie gebruikt worden als testwaarde bij de voorwaarde van een besturingsstructuur (if, switch) of een lusstructuur (for, while). De functie geeft meestal een booleaanse waarde terug (return false; of return true;). Als de functie een andere waarde teruggeeft moet je uiteraard testen op de verwachte waarden (met de vergelijkingsoperator ==).
Een functie kan ook één of meerdere argumenten bevatten. Als de statements binnen de functie bvb. 3 argumenten verwachten en er maar 2 argumenten zijn meegegeven bij de aanroep van de functie dan zal de waarde van het derde argument “null” zijn (“onbestaande”, “niets”).
Met de PHP-functie isset($variabele) kan je controleren of een variabele bestaat of niet.
Het bereik van de variabelen is zoals reeds gezegd beperkt tot de statements binnen de functie. Met het global statement kan je een variabele echter een globaal bereik geven (de variabele is binnen de functie dezelfde als erbuiten). Deze werkwijze wordt echter niet aangeraden.
Bij de functiedefinitie kan je startwaarden toekennen aan de argumenten. Hierdoor maak je deze argumenten optioneel bij de aanroep van de functie. Geef je toch een andere waarde mee dan wordt deze waarde in de functie gebruikt.


2. PHP functies
Voor een heleboel acties die in een programma moeten uitgevoerd worden kan je gebruik maken van ingebouwde PHP functies. In de PHP handleiding vind je het overzicht terug onder “Functie naslag” of je kunt de categorieën in de bijlage “K. Extension Categorization” raadplegen.
In de meeste handboeken over PHP worden ook lijsten opgenomen met de voornaamste PHP functies. Zo kan je o.a. categorieën terugvinden voor:
• functies voor arrays;
• functies voor bestanden;
• functies voor tekenreeksen;
• functies voor reguliere expressies;
• functies voor datums, kalenders en tijden;
• functies voor E-mail;
• functies voor MySQL;
• functies voor bestandssysteem;
• functies voor variabele types;
• functies voor printen;
• functies voor HTML;
• functies voor random nummers;
• functies voor strings;
• functies voor URL’s;
• functies voor sessies;
• functies voor diverse doeleinden;
• functies voor geïnstalleerde bibliotheken;
• …


3. Voorbeeld
In dit voorbeeld worden van de database 'films' (= schema naam) alle tabelnamen opgehaald.
Van elke tabel worden dan de veldnamen, de veldtypes en de datatypes opgehaald.
Voor het ophalen van de gegevens wordt telkens een functie gebruikt.
De resultaten worden mooi voorgesteld in een tabel.
<?php
// db_info.php
echo "<link rel='stylesheet' type='text/css' href='w3.css'>";
$schema = "films";
echo "<h3>&nbsp;Database naam: " . $schema . "</h3>";
$tabellen = haal_tabelnamen($schema);
foreach($tabellen as $tabelnaam) {
	echo "<table class='w3-table w3-table-all w3-half'>";
	echo "<tr><td colspan='3' class='w3-blue'>Tabelnaam: " . $tabelnaam . "</td></tr>";
	$veldinfo = haal_velden($schema,$tabelnaam);
	echo "<tr><th>Veldnaam</th><th>Veldtype</th><th>Datatype</th></tr>";
	for($j = 0 ; $j < count($veldinfo[0]) ; $j++) {
		echo "<tr>";
		echo "<td>".$veldinfo[0][$j]."</td>"."<td>".$veldinfo[1][$j]."</td>"."<td>".$veldinfo[2][$j]."</td>";			
		echo "</tr>";
	}
	echo "</table>";
}
return;

function haal_tabelnamen($schema) {
	$schema = str_replace('&amp;','&',$schema);
	$conn = new PDO("mysql:host=localhost;dbname=$schema", "root", "root");
	$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	$sql = "SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = :schema";
	$result = $conn->prepare($sql);
	$result->execute(array('schema' => $schema));
	$tabellen = array();
	while($row = $result->fetch(PDO::FETCH_ASSOC)){
		$tabellen[] = iconv('', 'utf-8', $row["table_name"]);                
	}
	return $tabellen;
}
function haal_velden($schema,$tabel) {
	$conn = new PDO("mysql:host=localhost;dbname=$schema", "root", "root");
	$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	$sql = "SELECT column_name,column_type,data_type FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = :table AND TABLE_SCHEMA = :schema";
	$result = $conn->prepare($sql);
	$result->execute(array('table' => $tabel,'schema' => $schema));
	$velden = array();
	$veldtypes = array();
	$datatypes = array();
	while($row = $result->fetch(PDO::FETCH_ASSOC)){
		$velden[] = iconv('', 'utf-8', $row["column_name"]);                
		$veldtypes[] = $row["column_type"];                
		$datatypes[] = $row["data_type"];                
	}
	return $veldinfo = array($velden,$veldtypes,$datatypes);
}