Ik kan reeds een tijdje werken met php, maar ben bang dat mijn kennis door de komst van php5 verouderd is. Nu zou ik, om het wat te leren, een korte samenvatting willen krijgen van de basisprincipes zodat ik die kan toepassen op een nieuw project.

Ik wil een eenvoudige website creeren van enkele pagina's waarbij de header en footer steeds hetzelfde blijven. De inhoud op de site zou ik in een MySQL database bewaren. Enkele van mijn vragen...

* Kan iemand mij een korte samenvatting geven van de recentste php OOP principes? Dat zou fantastisch zijn!
* Vroeger zou ik de header en footer code in een aparte php file zetten en gewoon op elke pagina include header.php en include footer.php gebruiken om de files aan te roepen. Tegenwoordig zie ik in recentere templates en ook bij wordpress sites enzo dat er een get_header() functie geschreven wordt. Wat is de mooiste / veiligste oplossing en hoe wordt dat toegepast?
* De functies die ik op de site wil gebruiken zou ik in een functions.php file zetten. Dien ik op elke pagina dan require(functions.php) aan te roepen om gebruik te maken van die functies? In recente wordpress site zie ik nergens require calls terugkomen. Kan iemand mij hier wat meer uitleg over geven?
* De inhoud die ik uit de MySQL database wil halen zou ik er op een veilig manier willen uithalen? Ik heb al gezien dat de bestaande mysql functies nog eens in een wrapper functie worden gestoken? Bijv de mysql_query($query) functie zou je dan in een zelfgeschreven functie DoQuery($query) stoppen die de databaseconnectie maakt, de query uitvoert en het resultaat teruggeeft. Is dit om veiligheidsredenen? Gaat dit SQL injectie dan tegen of nog niet?
* En tot slot: vroeger zette ik steeds mijn database configuratie (login, pw, host) in een variabele in een config.php file in de "private" folder van mijn ftp, die dan globaal beschikbaar is. Is dat nog steeds de beste en veiligste oplossing?

Belangrijk voor mij zijn veiligheidsrisico's en het toepassen van de meest recente technieken en principes op vlak van OOP en MVC.

Thanks!
Inderdaad, dat zou ik graag bereiken :D daarom heb ik dus een /lib/routing.php file aangemaakt met jouw code:

<?php

// haal alle pagina's op uit %root%/
// die eindigen met .php
$pages = glob(ROOT.DIRECTORY_SEPARATOR.'*.php');

// pak alleen de naam van het bestand
$pageNames = array_map('basename', $pages);

if (!isset($_GET['p'])) {
$_GET['p'] = 'home';
}

if (in_array($_GET['p'].'.php', $pageNames)) {
// include het bestand
require ROOT.DIRECTORY_SEPARATOR.$_GET['p'].'.php';
} else {
// include de 404 error pagina
require ROOT.'error'.DIRECTORY_SEPARATOR.'404.php';
}

?>

Hoe kan ik deze nu gebruiken en die require kwijtraken?
Dit is geen OO hè....

OO is het voorbeeldje die ik je net gaf (die link) van Pim. Dit wat je nu hebt is gewoon flat PHP.

En lees eens die comments die erbij staan, kijk eens wat de functies doen die erin staan en volg de logica van het script eens.
Het is allemaal wat ingewikkeld voor mij, waarvoor mijn excuses :) Dus als ik het goed begrijp moet ik gewoon require gebruiken om pagina's in mijn index.php file te voegen als ik flat php wil gebruiken. Als ik Object georienteerd wil werken moet ik gaan routen? Ben ik in het tweede geval dan ook verplicht om een platform als Zend of Symphony te gebruiken?
Nee, want je kan ook het scriptje gebruiken die ik net gaf in de link... (het scriptje van Pim waar ik al 3x over heb verteld): http://www.phphulp.nl/php/forum/topic/router/83492/#594215

En tevens kan je ook een micro-framework zoals Silex gebruiken.

En routen ben je altijd aan het doen. Routing is het omzetten van een url naar een pagina.
denk je dat ik ergens een eenvoudige objectgeorienteerde php / mysql cms zou kunnen downloaden? ik denk dat als ik de correcte manier van werken op m'n eigen tempo kan bekijken en uitpluizen dat ik de gedachtengang rapper onder de knie zal krijgen.
[google]opencart[/google] is een webshop, maar wel OO geprogrammeerd.
[google]magento[/google] ook een webshop, met Zend Framework gemaakt
[google]Joomla[/google] bagger pakket, maar OOP + MVC

Reageren