|
<a href="/?page=orders">Mine ordrer</a> |
Opbygningen af include_path består af følgende 5 enheder:
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(); |
Programmet er placeret i mappen "inc". Ved overholdelse af stier og navne kan programmet umiddelbart genbruges i andre projekter.
<?php require_once('config.php'); function __autoload($class_name) { $class = explode("_", $class_name); $path = implode("/", $class).".php"; require_once($path); } |
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.
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.
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 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.
<?php
// 5. mappenavn pages directory// 1. Opretter $_SESSION if(!isset($_SESSION)) { session_start(); } // 2. etablerer site-URL. F.eks: "http://www.webdok.dk" defined("SITE_URL") || define("SITE_URL", "http://".$_SERVER['SERVER_NAME']); // 3. etablerer mappe separator (directory separator) for aktuelt OS defined("DS") || define("DS", DIRECTORY_SEPARATOR); // 4. etablerer sti til rodmappen defined("ROOT_PATH") || define("ROOT_PATH", realpath(dirname(__FILE__) . DS."..".DS)); defined("PAGES_DIR") || define("PAGES_DIR", "pages"); // 5. mappenavn classes folder defined("CLASSES_DIR") || define("CLASSES_DIR", "classes"); // 5. mappenavn modules folder defined("MOD_DIR") || define("MOD_DIR", "mod"); // 5. mappenavn inc folder defined("INC_DIR") || define("INC_DIR", "inc"); // 5. mappenavn templates folder defined("TEMPLATE_DIR") || define("TEMPLATE_DIR", "template"); // 6. sti og mappe til emails path defined("EMAILS_PATH") || define("EMAILS_PATH", ROOT_PATH.DS."emails"); // 7. sti og mappe til catalogue images path defined("CATALOGUE_PATH") || define("CATALOGUE_PATH", ROOT_PATH.DS."media".DS."catalogue"); // 8. add all above directories to the include path set_include_path(implode(PATH_SEPARATOR, array( realpath(ROOT_PATH.DS.CLASSES_DIR), realpath(ROOT_PATH.DS.PAGES_DIR), realpath(ROOT_PATH.DS.MOD_DIR), realpath(ROOT_PATH.DS.INC_DIR), realpath(ROOT_PATH.DS.TEMPLATE_DIR), get_include_path()
))); |