From ea24ae3b5f3bba6fa3cfd5bcdb5d2eff31bacbd4 Mon Sep 17 00:00:00 2001 From: Lars Jung Date: Wed, 6 May 2015 23:51:12 +0200 Subject: [PATCH] Refactor PHP. --- src/_h5ai/server/php/inc/class-bootstrap.php | 56 +++++++++++++------ .../server/php/inc/{ => core}/class-api.php | 0 .../server/php/inc/{ => core}/class-app.php | 0 .../php/inc/{ => core}/class-fallback.php | 0 .../server/php/inc/{ => core}/class-item.php | 0 .../php/inc/{ => core}/class-logger.php | 0 .../server/php/inc/{ => core}/class-theme.php | 0 .../server/php/inc/{ => core}/class-util.php | 0 .../php/inc/{ => ext}/class-archive.php | 0 .../server/php/inc/{ => ext}/class-custom.php | 0 .../server/php/inc/{ => ext}/class-search.php | 0 .../server/php/inc/{ => ext}/class-thumb.php | 0 src/_h5ai/server/php/inc/page.php.jade | 1 - src/_h5ai/server/php/inc/version-check.php | 14 +++++ src/_h5ai/server/php/index.php | 26 ++------- 15 files changed, 57 insertions(+), 40 deletions(-) rename src/_h5ai/server/php/inc/{ => core}/class-api.php (100%) rename src/_h5ai/server/php/inc/{ => core}/class-app.php (100%) rename src/_h5ai/server/php/inc/{ => core}/class-fallback.php (100%) rename src/_h5ai/server/php/inc/{ => core}/class-item.php (100%) rename src/_h5ai/server/php/inc/{ => core}/class-logger.php (100%) rename src/_h5ai/server/php/inc/{ => core}/class-theme.php (100%) rename src/_h5ai/server/php/inc/{ => core}/class-util.php (100%) rename src/_h5ai/server/php/inc/{ => ext}/class-archive.php (100%) rename src/_h5ai/server/php/inc/{ => ext}/class-custom.php (100%) rename src/_h5ai/server/php/inc/{ => ext}/class-search.php (100%) rename src/_h5ai/server/php/inc/{ => ext}/class-thumb.php (100%) create mode 100644 src/_h5ai/server/php/inc/version-check.php diff --git a/src/_h5ai/server/php/inc/class-bootstrap.php b/src/_h5ai/server/php/inc/class-bootstrap.php index 3f27a039..47fef6ef 100644 --- a/src/_h5ai/server/php/inc/class-bootstrap.php +++ b/src/_h5ai/server/php/inc/class-bootstrap.php @@ -2,18 +2,27 @@ class Bootstrap { - public static function run() { + private static $classpaths = ["/inc", "/inc/core", "/inc/ext"]; - normalized_require_once("config"); + private $basepath; - $bs = new Bootstrap(); - $bs->setup_php(); - $bs->setup_app(); - $bs->setup_admin(); - $bs->setup_server(); - $bs->setup_paths(); - $bs->setup_cache(); - $bs->setup_ext_cmds(); + public function __construct($basepath) { + + $this->basepath = $basepath; + } + + public function run() { + + spl_autoload_register([$this, "autoload"]); + + $this->once("config"); + $this->setup_php(); + $this->setup_app(); + $this->setup_admin(); + $this->setup_server(); + $this->setup_paths(); + $this->setup_cache(); + $this->setup_ext_cmds(); $app = new App(); if (Util::is_post_request()) { @@ -22,10 +31,29 @@ class Bootstrap { } else { $fallback = new Fallback($app); define("FALLBACK", $fallback->get_html()); - normalized_require_once("inc/page"); + $this->once("inc/page"); } } + public function autoload($class_name) { + + $filename = "class-" . strtolower($class_name) . ".php"; + + foreach (Bootstrap::$classpaths as $path) { + $file = $this->basepath . $path . "/" . $filename; + if (file_exists($file)) { + require_once($file); + return true; + } + } + + return false; + } + + private function once($lib) { + + require_once($this->basepath . "/" . $lib . ".php"); + } private function setup_php() { @@ -42,7 +70,6 @@ class Bootstrap { define("HAS_PHP_JPEG", $has_php_jpeg); } - private function setup_app() { define("NAME", "{{pkg.name}}"); @@ -50,7 +77,6 @@ class Bootstrap { define("FILE_PREFIX", "_{{pkg.name}}"); } - private function setup_admin() { session_start(); @@ -59,7 +85,6 @@ class Bootstrap { define("HAS_CUSTOM_PASSHASH", strcasecmp(PASSHASH, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") !== 0); } - private function setup_server() { $server_name = null; @@ -74,7 +99,6 @@ class Bootstrap { define("HAS_SERVER", in_array($server_name, ["apache", "lighttpd", "nginx", "cherokee"])); } - private function setup_paths() { $script_name = getenv("SCRIPT_NAME"); @@ -94,7 +118,6 @@ class Bootstrap { define("INDEX_HREF", $index_href); } - private function setup_cache() { define("CACHE_HREF", Util::normalize_path(APP_HREF . "/cache", true)); @@ -102,7 +125,6 @@ class Bootstrap { define("HAS_WRITABLE_CACHE", @is_writable(CACHE_PATH)); } - private function setup_ext_cmds() { define("CMDS_PATH", Util::normalize_path(CACHE_PATH . "/cmds.json", false)); diff --git a/src/_h5ai/server/php/inc/class-api.php b/src/_h5ai/server/php/inc/core/class-api.php similarity index 100% rename from src/_h5ai/server/php/inc/class-api.php rename to src/_h5ai/server/php/inc/core/class-api.php diff --git a/src/_h5ai/server/php/inc/class-app.php b/src/_h5ai/server/php/inc/core/class-app.php similarity index 100% rename from src/_h5ai/server/php/inc/class-app.php rename to src/_h5ai/server/php/inc/core/class-app.php diff --git a/src/_h5ai/server/php/inc/class-fallback.php b/src/_h5ai/server/php/inc/core/class-fallback.php similarity index 100% rename from src/_h5ai/server/php/inc/class-fallback.php rename to src/_h5ai/server/php/inc/core/class-fallback.php diff --git a/src/_h5ai/server/php/inc/class-item.php b/src/_h5ai/server/php/inc/core/class-item.php similarity index 100% rename from src/_h5ai/server/php/inc/class-item.php rename to src/_h5ai/server/php/inc/core/class-item.php diff --git a/src/_h5ai/server/php/inc/class-logger.php b/src/_h5ai/server/php/inc/core/class-logger.php similarity index 100% rename from src/_h5ai/server/php/inc/class-logger.php rename to src/_h5ai/server/php/inc/core/class-logger.php diff --git a/src/_h5ai/server/php/inc/class-theme.php b/src/_h5ai/server/php/inc/core/class-theme.php similarity index 100% rename from src/_h5ai/server/php/inc/class-theme.php rename to src/_h5ai/server/php/inc/core/class-theme.php diff --git a/src/_h5ai/server/php/inc/class-util.php b/src/_h5ai/server/php/inc/core/class-util.php similarity index 100% rename from src/_h5ai/server/php/inc/class-util.php rename to src/_h5ai/server/php/inc/core/class-util.php diff --git a/src/_h5ai/server/php/inc/class-archive.php b/src/_h5ai/server/php/inc/ext/class-archive.php similarity index 100% rename from src/_h5ai/server/php/inc/class-archive.php rename to src/_h5ai/server/php/inc/ext/class-archive.php diff --git a/src/_h5ai/server/php/inc/class-custom.php b/src/_h5ai/server/php/inc/ext/class-custom.php similarity index 100% rename from src/_h5ai/server/php/inc/class-custom.php rename to src/_h5ai/server/php/inc/ext/class-custom.php diff --git a/src/_h5ai/server/php/inc/class-search.php b/src/_h5ai/server/php/inc/ext/class-search.php similarity index 100% rename from src/_h5ai/server/php/inc/class-search.php rename to src/_h5ai/server/php/inc/ext/class-search.php diff --git a/src/_h5ai/server/php/inc/class-thumb.php b/src/_h5ai/server/php/inc/ext/class-thumb.php similarity index 100% rename from src/_h5ai/server/php/inc/class-thumb.php rename to src/_h5ai/server/php/inc/ext/class-thumb.php diff --git a/src/_h5ai/server/php/inc/page.php.jade b/src/_h5ai/server/php/inc/page.php.jade index d8f102ba..1fd1a6e8 100644 --- a/src/_h5ai/server/php/inc/page.php.jade +++ b/src/_h5ai/server/php/inc/page.php.jade @@ -1,4 +1,3 @@ - - var app_href = "" - var fallback = "" diff --git a/src/_h5ai/server/php/inc/version-check.php b/src/_h5ai/server/php/inc/version-check.php new file mode 100644 index 00000000..499882c7 --- /dev/null +++ b/src/_h5ai/server/php/inc/version-check.php @@ -0,0 +1,14 @@ += 0); + +if (!HAS_MIN_PHP_VERSION) { + header("Content-type: application/json;charset=utf-8"); + echo json_encode(array( + "err" => "ERR_PHP", + "msg" => "PHP " . MIN_PHP_VERSION . "+ required, only found " . PHP_VERSION, + "ver" => PHP_VERSION + )); + exit; +} diff --git a/src/_h5ai/server/php/index.php b/src/_h5ai/server/php/index.php index ff5e7850..72273ec5 100644 --- a/src/_h5ai/server/php/index.php +++ b/src/_h5ai/server/php/index.php @@ -1,26 +1,8 @@ = 0); +define("BASE_PATH", preg_replace("#[\\\\/]+#", "/", dirname(__FILE__))); -if (!HAS_MIN_PHP_VERSION) { - header("Content-type: application/json;charset=utf-8"); - echo json_encode(array( - "err" => "ERR_PHP", - "msg" => "PHP " . MIN_PHP_VERSION . "+ required, only found " . PHP_VERSION, - "ver" => PHP_VERSION - )); - exit; -} +require_once(BASE_PATH . "/inc/version-check.php"); +require_once(BASE_PATH . "/inc/class-bootstrap.php"); -function normalized_require_once($lib) { - - require_once(preg_replace("#[\\\\/]+#", "/", dirname(__FILE__) . "/${lib}.php")); -} - -function __autoload($class_name) { - - normalized_require_once("inc/class-" . strtolower($class_name)); -} - -Bootstrap::run(); +(new Bootstrap(BASE_PATH))->run();