Første fase i opbygningen af et site bør være etableringen af et Framework. Frameworket omfatter etableringen af en mappestruktur til sitets filer og etableringen af en include_path med config.php.
Mappestruktur
Mappestrukturen for et site til E-handel kan se sådan ud:
Alle programmer uden suffix er PHP-programmer.
Der er p.t. ingen links fra fil-ikonerbe.
'i_p' indekerer de mapper, der i config.php indgår i arrayen "include_path".
Indholdet i de enkelte mapper kan kort beskrives således:
Admin Alle programmer til admin (backend)
classes Alle klasser til frontend og backend
css Diverse filer relateret til css
emails Tekster til automatisk sendte emails
images Billeder til systemdrift - "jeg arbejder"-gif. m.m.
inc Programmer til brug i Framework
js Diverse javascript-programmer. Til Ajax etc.
media Billeder til brug for varestamdata etc.
mod Programmer til modifikation af sider - ajax-rutiner etc.
pages Programmer knyttet til alle sider, der skal vises på sitet.
template Include-filer til opbygning af template for sider vist på sitet.
Index Sitets startside.
Konceptet bør - med tilpasninger - kunne danne grundlag for mappestrukturen i alle sites. Opdelingen i indhold i de enkelte mapper er væsentligere end deres navne.
include_path
En konsekvens af opdelingen i HTML- og KLASSE-filer er, at der mange gange skal skiftes til en anden mappe / fil. Det giver et stort arbejde med at holde styr på og angive, hvilken mappe den enkelte klasse / program findes i.
Ved at etablere en situationstilpasset include_path kan det arbejde i væsentligt omfang reduceres til, at man kan undgå hver gang at skulle anføre stien, men kan nøjes med filnavn.
include_path er et parameter i php.ini, der default er sat til:
Framework er den samlende betegnelse for det programmel der er nødvendigt for en automatiseret anvendelse af include_path.
Det er nødvendigt at alle programmer, der er knyttet til include_path, er navngivet unikt.
Ved kald til filer, der ikke indgår i include_path skal den nødvendige sti anføres.
Kald til / brug af include_path ude fra de enkelte programmer foretages med et URL-parameter(?page) og det program (uden suffix) der skal findes:
<a href="/?page=orders">Mine ordrer</a>
Opbygningen af include_path består af følgende 5 enheder:
index.php
Programmet er det eneste, der er placeret i projektets rod. Ved overholdelse af stier og navne kan programmet umiddelbart genbruges i andre projekter.
<?php
require_once('inc/autoload.php');
$core = new Core();
$core->run();
autoload.php
Programmet er placeret i mappen "inc". Ved overholdelse af stier og navne kan programmet umiddelbart genbruges i andre projekter.
Udfører config.php og vil derefter automatisk kalde den specifikke klasse. Uanset hvilken klasse der kaldes, vil der automatisk blive foretaget require_once af den fil, der indeholder den pågældende klasse.
Core()
Klassen placeres i klasse-mappen "classes". Ved overholdelse af stier og navne kan programmet umiddelbart genbruges i andre projekter.
<?php
class Core {
public function run() {
ob_start();
require_once(Url::getPage());
ob_get_flush();
}
}
Anvender funktionen "getPage" i klassen "URL" til at vise anfordret ny side.
URL()
Funktionen er en blandt adskillige i klassen "URL" i klasse-mappen. Ved overholdelse af stier og navne kan programmet umiddelbart genbruges i andre projekter.
public static function getPage() {
$page = self::$_folder.DS.self::cPage().".php";
$error = self::$_folder.DS."error.php";
return is_file($page) ? $page : $error;
}
config.php
config.php anvendes til at opbygge en "include_path" tilpasset boghandelen. En del af programmet kan umiddelbart genbruges i andre projekter.
include_path
Når PHP skal finde et stykke programmel for at udføre det, kigger det (også) i "include_path". Include_path er (forenklet) en brugeretableret array, der i hvert element som "name" indeholder navnet på det stykke programmel, der skal anvendes, og som "value" indeholder stien dertil. Det betyder at brugeren, når den nødvendige include_path er etableret og på plads, i sin kode kan nøjes med at angive navnet på det stykke programmel, der skal anvendes. PHP vil herefter selv finde frem til det.
Med mange programmer og klasser i et OOP-projekt kan det være hensigtsmæssigt at placere dem i et antal grupperende mapper. Koden nedenfor er en af måderne, hvorpå man kan opbygge og ibrugtage en include_path.
Opbygningen af include_path er snævert knyttet til den mappestruktur, der benyttes for sitet og admin. Det er derfor hensigtsmæssigt allerede tidligt i projektforløbet at have et godt overblik over den endelige struktur for mapper til programmer.
$_SESSION Starter $_SESSION. Skal altid være over al anden kode.
SITE_URL Etablerer konstant med navnet på sitet.
DS Etablerer konstant med mappe-separator tilpasset aktuelt operativ system.
ROOT_PATH Konstant med sti til sitets rod-mappe. Med udgangspunkt i __FILE__ gås et niveau baglæns fra 'inc' til den mappe, hvori boghandel-programmerne er placerede.
XXX_DIR Konstanter for alle de mapper med site-programmer, der indeholder xx.php programmer. (bortset fra email).
EMAILS_PATH Konstant med sti til programmet "1.php".
CATALOGUE_PATH Sti til mappe med 1 billede af hver bog.
set_include_path / get_include_path set_include_path opbygger include_path for de mapper, der er angivet under "5" ovenfor.get_include_path tilføjer den oprindelige path til den nye.