Update index.php

This commit is contained in:
Namhyeon Go 2018-04-13 14:38:16 +09:00 committed by GitHub
parent 38fd7ad438
commit 0578ebb977
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

219
index.php
View File

@ -1,202 +1,59 @@
<?php
/**
* @file base.php
* @file index.php
* @date 2018-04-13
* @author Go Namhyeon <gnh1201@gmail.com>
* @brief Base module
* @brief ReasonableFramework
* @cvs http://github.com/gnh1201/reasonableframework
*/
// set scope
if(!function_exists("set_scope")) {
function set_scope($k, $v) {
global $scope;
$scope[$k] = $v;
}
}
define("_DEF_VSPF_", true);
// get scope
if(!function_exists("get_scope")) {
function get_scope($k) {
global $scope;
return array_key_exists($k, $scope) ? $scope[$k] : null;
}
}
// define system modules
$load_systems = array("base", "config", "database", "uri", "logger", "security");
// register loaded resources
if(!function_exists("register_loaded")) {
function register_loaded($k, $v) {
global $scope;
if(array_key_exists($k, $scope['loaded'])) {
array_push($scope['loaded'][$k], $v);
// load system modules
foreach($load_systems as $system_name) {
$system_inc_file = "./system/" . $system_name . ".php";
if(file_exists($system_inc_file)) {
if($system_name == "base") {
include($system_inc_file);
} else {
include_isolate($system_inc_file, $scope);
}
}
}
// sandbox for include function
if(!function_exists("include_isolate")) {
function include_isolate($file, $data=array()) {
if(count($data) > 0) {
extract($data);
}
return include($file);
}
// get config
$config = get_scope("config");
// set max_execution_time
$max_execution_time = get_value_in_array("max_execution_time", $config, 0);
@ini_set("max_execution_time", $max_execution_time);
// autoload module
if(!array_key_empty("enable_autoload", $config)) {
loadModule("autoload");
}
// load view file
if(!function_exists("renderView")) {
function renderView($name, $data=array()) {
if(count($data) > 0) {
extract($data);
}
// set timezone
$default_timezone = get_value_in_array("timezone", $config, "UTC");
date_default_timezone_set($default_timezone);
$flag = true;
$views = explode(';', $name);
foreach($views as $name2) {
$viewfile = './view/' . $name2 . '.php';
if(file_exists($viewfile)) {
$flag = $flag && include_isolate($viewfile, $data);
register_loaded("view", $viewfile);
}
}
return $flag;
}
}
// route controller
$route = get_value_in_array("route", $_REQUEST, "");
// load system module
if(!function_exists("loadModule")) {
function loadModule($name) {
$flag = true;
$modules = explode(';', $name);
foreach($modules as $name2) {
$systemfile = './system/' . $name2 . '.php';
if(file_exists($systemfile)) {
$flag = $flag && include_isolate($systemfile);
register_loaded("view", $systemfile);
}
}
return $flag;
}
}
// load helper file
if(!function_exists("loadHelper")) {
function loadHelper($name) {
$flag = true;
$helpers = explode(';', $name);
foreach($helpers as $name2) {
$helperfile = './helper/' . $name2 . '.php';
if(file_exists($helperfile)) {
$flag = $flag && include_isolate($helperfile);
register_loaded("helper", $helperfile);
}
}
// load route
if(empty($route)) {
$route = get_value_in_array("default_route", $config, "welcome");
} else {
$route_names = explode('/', $route);
if(count($route_names) > 1) {
$route = $route_names[0];
}
}
// load route file
if(!function_exists("loadRoute")) {
function loadRoute($name, $data=array()) {
$flag = true;
$routes = explode(";", $name);
foreach($routes as $name2) {
$routefile = './route/' . $name . '.php';
if(file_exists($routefile)) {
$flag = $flag && include_isolate($routefile, $data);
register_loaded("route", $routefile);
}
}
return $flag;
}
if(!loadRoute($route, $scope)) {
loadRoute("errors/404", $scope);
}
if(!function_exists("array_key_empty")) {
function array_key_empty($key, $array) {
$empty = true;
if(is_array($array)) {
if(array_key_exists($key, $array)) {
if(!empty($array[$key])) {
$empty = false;
}
}
}
return $empty;
}
}
if(!function_exists("array_multikey_empty")) {
function array_multikey_empty($keys, $array) {
$flag = true;
foreach($keys as $key) {
$flag = $flag && array_key_empty($key, $array);
}
return $flag;
}
}
if(!function_exists("get_value_in_array")) {
function get_value_in_array($name, $arr=array(), $default=0) {
$output = 0;
if(is_array($arr)) {
$output = array_key_empty($name, $arr) ? $default : $arr[$name];
} else {
$output = $default;
}
return $output;
}
}
if(!function_exists("cut_str")) {
function cut_str($str, $start, $len=0) {
$cutted_str = "";
if(function_exists("iconv_substr")) {
$cutted_str = iconv_substr($str, $start, $len, "utf-8");
} elseif(function_exists("mb_substr")) {
$cutted_str = mb_substr($str, $start, $len);
} else {
$cutted_str = substr($start, $len);
}
return $cutted_str;
}
}
if(!function_exists("read_file_by_line")) {
function read_file_by_line($filename) {
$lines = array();
$handle = fopen($filename, "r");
if ($handle) {
while (($line = fgets($handle)) !== false) {
$lines[] .= $line;
}
fclose($handle);
}
return $lines;
}
}
if(!function_exists("nl2p")) {
function nl2p($string) {
$paragraphs = '';
foreach (explode("\n", $string) as $line) {
if (trim($line)) {
$paragraphs .= '<p>' . $line . '</p>';
}
}
return $paragraphs;
}
}
$scope = array();
set_scope("loaded", array(
"module" => array(),
"helper" => array(),
"view" => array(),
"route" => array(),
));