TOP-framework/framework/Framework.php

149 lines
3.6 KiB
PHP

<?php
namespace top;
use top\library\Application;
// 定义简写文件分割符号常量
!defined('DS') && define('DS', DIRECTORY_SEPARATOR);
/**
* 框架入口
* 所有目录都是小写,所有类名首字母为大写
* 命令行创建模块请进入目录: /framework/create
* 执行 php create.php 命名空间 模块名 [入口文件名]
* [] 为可选参数
* @author topnuomi 2018年11月19日
*/
class Framework
{
/**
* 框架入口
* @param string $callable
* @param array $autoLoadMap
*/
public static function startApp($callable = '', $autoLoadMap = [])
{
(is_callable($callable)) && $callable(self::class);
// 指定时区
date_default_timezone_set('PRC');
// 强制在入口文件指定应用目录
if (defined('APP_PATH')) {
self::debug();
// self::appPath();
self::defaultModule();
self::appNameSpace();
self::resourcePath();
self::frameworkPath();
self::sessionPath();
require 'library/Application.php';
Application::run($autoLoadMap);
} else echo '请使用Framework::appPath()指定应用目录';
}
/**
* 应用目录
* @param string $path
*/
public static function appPath($path = '')
{
if (!defined('APP_PATH')) {
(!$path) && $path = '.' . DS . 'application' . DS;
define('APP_PATH', str_replace('/', DS, $path));
}
}
/**
* 是否开启DEBUG
* @param bool $status
*/
public static function debug($status = false)
{
(!defined('DEBUG')) && define('DEBUG', $status);
}
/**
* 默认模块
* @param string $module
*/
public static function defaultModule($module = '')
{
if (!defined('DEFAULT_MODULE')) {
(!$module) && $module = 'home';
define('DEFAULT_MODULE', $module);
}
}
/**
* 绑定模块
* @param string $module
*/
public static function bindModule($module = '')
{
if (!defined('BIND_MODULE')) {
(!$module) && $module = 'home';
define('BIND_MODULE', $module);
}
}
/**
* 指定框架目录
* @param string $path
*/
public static function frameworkPath($path = '')
{
if (!defined('FRAMEWORK_PATH')) {
(!$path) && $path = __DIR__ . DS;
define('FRAMEWORK_PATH', str_replace('/', DS, $path));
}
}
/**
* 应用命名空间
* @param string $namespace
*/
public static function appNameSpace($namespace = '')
{
if (!defined('APP_NS')) {
(!$namespace) && $namespace = 'app';
define('APP_NS', $namespace);
}
}
/**
* 指定Resource目录
* @param string $path
*/
public static function resourcePath($path = '')
{
if (!defined('RESOURCE')) {
if (!$path && isset($_SERVER['SCRIPT_NAME'])) {
$scriptName = $_SERVER['SCRIPT_NAME'];
$pos = strrpos($scriptName, '/');
$root = substr($scriptName, 0, $pos + 1);
$path = $root . 'resource' . '/';
}
define('RESOURCE', $path);
}
}
/**
* 指定session保存目录
* @param string $path
*/
public static function sessionPath($path = '')
{
if (!defined('SESSION_PATH')) {
(!$path) && $path = '.' . DS . 'runtime' . DS . 'session' . DS;
(!is_dir($path)) && mkdir($path, 0755, true);
define('SESSION_PATH', str_replace('/', DS, $path));
}
}
}