mirror of
https://github.com/lrsjng/h5ai.git
synced 2025-05-29 22:45:14 -04:00
Refactor PHP.
This commit is contained in:
parent
55597ae1ba
commit
ea24ae3b5f
15 changed files with 57 additions and 40 deletions
|
@ -2,18 +2,27 @@
|
||||||
|
|
||||||
class Bootstrap {
|
class Bootstrap {
|
||||||
|
|
||||||
public static function run() {
|
private static $classpaths = ["/inc", "/inc/core", "/inc/ext"];
|
||||||
|
|
||||||
normalized_require_once("config");
|
private $basepath;
|
||||||
|
|
||||||
$bs = new Bootstrap();
|
public function __construct($basepath) {
|
||||||
$bs->setup_php();
|
|
||||||
$bs->setup_app();
|
$this->basepath = $basepath;
|
||||||
$bs->setup_admin();
|
}
|
||||||
$bs->setup_server();
|
|
||||||
$bs->setup_paths();
|
public function run() {
|
||||||
$bs->setup_cache();
|
|
||||||
$bs->setup_ext_cmds();
|
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();
|
$app = new App();
|
||||||
if (Util::is_post_request()) {
|
if (Util::is_post_request()) {
|
||||||
|
@ -22,10 +31,29 @@ class Bootstrap {
|
||||||
} else {
|
} else {
|
||||||
$fallback = new Fallback($app);
|
$fallback = new Fallback($app);
|
||||||
define("FALLBACK", $fallback->get_html());
|
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() {
|
private function setup_php() {
|
||||||
|
|
||||||
|
@ -42,7 +70,6 @@ class Bootstrap {
|
||||||
define("HAS_PHP_JPEG", $has_php_jpeg);
|
define("HAS_PHP_JPEG", $has_php_jpeg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private function setup_app() {
|
private function setup_app() {
|
||||||
|
|
||||||
define("NAME", "{{pkg.name}}");
|
define("NAME", "{{pkg.name}}");
|
||||||
|
@ -50,7 +77,6 @@ class Bootstrap {
|
||||||
define("FILE_PREFIX", "_{{pkg.name}}");
|
define("FILE_PREFIX", "_{{pkg.name}}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private function setup_admin() {
|
private function setup_admin() {
|
||||||
|
|
||||||
session_start();
|
session_start();
|
||||||
|
@ -59,7 +85,6 @@ class Bootstrap {
|
||||||
define("HAS_CUSTOM_PASSHASH", strcasecmp(PASSHASH, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") !== 0);
|
define("HAS_CUSTOM_PASSHASH", strcasecmp(PASSHASH, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") !== 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private function setup_server() {
|
private function setup_server() {
|
||||||
|
|
||||||
$server_name = null;
|
$server_name = null;
|
||||||
|
@ -74,7 +99,6 @@ class Bootstrap {
|
||||||
define("HAS_SERVER", in_array($server_name, ["apache", "lighttpd", "nginx", "cherokee"]));
|
define("HAS_SERVER", in_array($server_name, ["apache", "lighttpd", "nginx", "cherokee"]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private function setup_paths() {
|
private function setup_paths() {
|
||||||
|
|
||||||
$script_name = getenv("SCRIPT_NAME");
|
$script_name = getenv("SCRIPT_NAME");
|
||||||
|
@ -94,7 +118,6 @@ class Bootstrap {
|
||||||
define("INDEX_HREF", $index_href);
|
define("INDEX_HREF", $index_href);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private function setup_cache() {
|
private function setup_cache() {
|
||||||
|
|
||||||
define("CACHE_HREF", Util::normalize_path(APP_HREF . "/cache", true));
|
define("CACHE_HREF", Util::normalize_path(APP_HREF . "/cache", true));
|
||||||
|
@ -102,7 +125,6 @@ class Bootstrap {
|
||||||
define("HAS_WRITABLE_CACHE", @is_writable(CACHE_PATH));
|
define("HAS_WRITABLE_CACHE", @is_writable(CACHE_PATH));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private function setup_ext_cmds() {
|
private function setup_ext_cmds() {
|
||||||
|
|
||||||
define("CMDS_PATH", Util::normalize_path(CACHE_PATH . "/cmds.json", false));
|
define("CMDS_PATH", Util::normalize_path(CACHE_PATH . "/cmds.json", false));
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
- var app_href = "<?= APP_HREF; ?>"
|
- var app_href = "<?= APP_HREF; ?>"
|
||||||
- var fallback = "<?= FALLBACK; ?>"
|
- var fallback = "<?= FALLBACK; ?>"
|
||||||
|
|
||||||
|
|
14
src/_h5ai/server/php/inc/version-check.php
Normal file
14
src/_h5ai/server/php/inc/version-check.php
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
define("MIN_PHP_VERSION", "5.4.0");
|
||||||
|
define("HAS_MIN_PHP_VERSION", version_compare(PHP_VERSION, MIN_PHP_VERSION) >= 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;
|
||||||
|
}
|
|
@ -1,26 +1,8 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
define("MIN_PHP_VERSION", "5.4.0");
|
define("BASE_PATH", preg_replace("#[\\\\/]+#", "/", dirname(__FILE__)));
|
||||||
define("HAS_MIN_PHP_VERSION", version_compare(PHP_VERSION, MIN_PHP_VERSION) >= 0);
|
|
||||||
|
|
||||||
if (!HAS_MIN_PHP_VERSION) {
|
require_once(BASE_PATH . "/inc/version-check.php");
|
||||||
header("Content-type: application/json;charset=utf-8");
|
require_once(BASE_PATH . "/inc/class-bootstrap.php");
|
||||||
echo json_encode(array(
|
|
||||||
"err" => "ERR_PHP",
|
|
||||||
"msg" => "PHP " . MIN_PHP_VERSION . "+ required, only found " . PHP_VERSION,
|
|
||||||
"ver" => PHP_VERSION
|
|
||||||
));
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
function normalized_require_once($lib) {
|
(new Bootstrap(BASE_PATH))->run();
|
||||||
|
|
||||||
require_once(preg_replace("#[\\\\/]+#", "/", dirname(__FILE__) . "/${lib}.php"));
|
|
||||||
}
|
|
||||||
|
|
||||||
function __autoload($class_name) {
|
|
||||||
|
|
||||||
normalized_require_once("inc/class-" . strtolower($class_name));
|
|
||||||
}
|
|
||||||
|
|
||||||
Bootstrap::run();
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue