From 600cf1de0aa16ccfdb7a3044d70ab34c5fb918d7 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Sat, 11 Jun 2016 19:55:16 +0200 Subject: [PATCH] #3 docu system --- system/HEADER.php | 70 ++++++++++++++++++++++++++++++++++++++++----- system/autoload.php | 56 ++++++++++++++++++++++++++++++------ 2 files changed, 111 insertions(+), 15 deletions(-) diff --git a/system/HEADER.php b/system/HEADER.php index 92ac5ff..71809cb 100644 --- a/system/HEADER.php +++ b/system/HEADER.php @@ -15,6 +15,12 @@ namespace SYSTEM; * HEADER Class provided by System Send HTML Headers */ class HEADER { + /** + * Check if Header was already sent + * Writes Warning into Database on failure if Database logging is enabled. + * + * @return bool Returns true or false + */ private static function checkHeader(){ $file = null; $line = null; @@ -24,41 +30,91 @@ class HEADER { return true; } + /** + * Check if a given Datatype has a handler within this class. + * Not Case sensitive. + * + * @param string $datatype Datatype to be checked eg. 'jpg' + * @return bool Returns true or false + */ + public static function available($datatype){ + return \method_exists('\SYSTEM\HEADER', strtoupper($datatype));} + + /** + * Send JSON Headers, if Header was not sent yet + * + * @return null Returns null + */ public static function JSON(){ if(self::checkHeader()){ header('Access-Control-Allow-Origin: *');//allow cross domain calls header('content-type: application/json');}} + /** + * Send PNG Headers, if Header was not sent yet + * + * @return null Returns null + */ public static function PNG(){ if(self::checkHeader()){ header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + (60 * 60))); // 1 hour header('content-type:image/png;');}} + /** + * Send JPG Headers, if Header was not sent yet + * + * @return null Returns null + */ public static function JPG(){ if(self::checkHeader()){ header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + (60 * 60))); // 1 hour header('content-type:image/jpeg;');}} + /** + * Send JPEG Headers, if Header was not sent yet + * + * @return null Returns null + */ public static function JPEG(){ if(self::checkHeader()){ header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + (60 * 60))); // 1 hour - header('content-type:image/jpeg;');}} + header('content-type:image/jpeg;');}} + /** + * Send GIF Headers, if Header was not sent yet + * + * @return null Returns null + */ public static function GIF(){ if(self::checkHeader()){ header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + (60 * 60))); // 1 hour - header('content-type:image/gif;');}} + header('content-type:image/gif;');}} + /** + * Send JS Headers, if Header was not sent yet + * + * @return null Returns null + */ public static function JS(){ if(self::checkHeader()){ header('content-type:application/javascript;');}} + /** + * Send CSS Headers, if Header was not sent yet + * + * @return null Returns null + */ public static function CSS(){ if(self::checkHeader()){ header('content-type:text/css;');}} + /** + * Send LESS Headers, if Header was not sent yet + * + * @return null Returns null + */ public static function LESS(){ if(self::checkHeader()){ header('content-type:text/css;');}} - + /** + * Send FILE(download) Headers, if Header was not sent yet + * + * @return null Returns null + */ public static function FILE($filename){ header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"".$filename."\"");} - - public static function available($datatype){ - $datatype = strtoupper($datatype); - return \method_exists('\SYSTEM\HEADER', $datatype);} } \ No newline at end of file diff --git a/system/autoload.php b/system/autoload.php index b1bb4a7..fa3ad67 100644 --- a/system/autoload.php +++ b/system/autoload.php @@ -22,10 +22,22 @@ class autoload { /** string Registered Func Format array(namespace, func) */ private static $func = array(); + /** + * Get the Classname of a File by removing its extension and containing folders. + * + * @param string $file Filepath to be reduced to classname + * @return string Returns classname + */ private static function getClassFromFile($file){ $path_info = \pathinfo($file); return $path_info['filename'];} + /** + * Seperates Class and Namespace of a combined string. + * + * @param string $class Class including possible Namespaces + * @return array Returns array(class,namespace). + */ private static function getClassNamespaceFromClass($class){ $path_info = \pathinfo($class); $lastslash = \strrpos($class, 92); @@ -38,43 +50,71 @@ class autoload { \substr($class, 0, $lastslash)); } + /** + * The autoload Feature. Searches within all registered file, folders and + * functions if a matching class can be found, respecting namespaces in the + * process. + * + * @param string $class Class to be autoloaded + * @param string $namespace Namespace of the Request + * @return bool Returns true or false. + */ private static function autoload_($class, $namespace = ''){ foreach(self::$files as $file){ if(strtolower($file[0]) == strtolower($class) && strtolower($file[1]) == strtolower($namespace)){ require_once $file[2]; return true;} - } - + } foreach(self::$folders as $folder){ if(strtolower($folder[0]) == strtolower($namespace) && is_file($folder[1].'/'.$class.'.php')){ require_once $folder[1].'/'.$class.'.php'; return true;} } - foreach(self::$func as $func){ if(strtolower($func[0]) == strtolower($namespace) && call_user_func($func[1],$class)){ - return true;} - } - + return true;}} return false; } + /** + * Registers a file to the autoload feature + * The file has to be named class.php + * + * @param string $file Filepath to be autoloaded from + * @param string $namespace Namespace of the File + * @return null Returns null. + */ public static function registerFile($file, $namespace = ''){ if(!is_file($file)){ throw new \SYSTEM\LOG\ERROR('File not found on registerFile for Autoload: '.$file);} - self::$files[] = array(self::getClassFromFile($file), $namespace, $file); } + /** + * Registers a folder to the autoload feature + * All Classes within that Folder can be loaded if + * the file is named: class.php + * + * @param string $folder Folderpath to be autoloaded from + * @param string $namespace Namespace of the Folder + * @return null Returns null. + */ public static function registerFolder($folder, $namespace = ''){ if(!is_dir($folder)){ throw new \SYSTEM\LOG\ERROR('Folder not found on registerFolder for Autoload: '.$folder);} - self::$folders[] = array($namespace, $folder); } + /** + * Registers a function to the autoload feature + * @todo Does this work? Is it useful? + * + * @param string $func Function to be "autoloaded" + * @param string $namespace Namespace of the Function + * @return null Returns null. + */ public static function registerFunc($func, $namespace = ''){ /*if(!_exists($func)){ throw new \SYSTEM\LOG\ERROR('Function not found on registerFunc for Autoload: '.$func);}*/