<commit_before><?php
/**
 * Created by PhpStorm
 * @desc: SinglePHP框架
 * @package: SinglePHP.class.php
 * @author: leandre weibo.com/nly
 * @copyright: copyright(2014) leandre.cn
 * @version: 14/10/27
 */

namespace Single;
date_default_timezone_set('Asia/Shanghai');
/**
 * 获取和设置配置参数 支持批量定义
 * 如果$key是关联型数组，则会按K-V的形式写入配置
 * 如果$key是数字索引数组，则返回对应的配置数组
 * @param string|array $key 配置变量
 * @param array|null $value 配置值
 * @return array|null
 */
function C($key, $value = null)
{
    static $_config = array();
    $args = func_num_args();
    if ($args == 1) {
        if (is_string($key)) { //如果传入的key是字符串
            return isset($_config[$key]) ? $_config[$key] : null;
        }
        if (is_array($key)) {
            if (array_keys($key) !== range(0, count($key) - 1)) { //如果传入的key是关联数组
                $_config = array_merge($_config, $key);
            } else {
                $ret = array();
                foreach ($key as $k) {
                    $ret[$k] = isset($_config[$k]) ? $_config[$k] : null;
                }
                return $ret;
            }
        }
    } else {
        if (is_string($key)) {
            $_config[$key] = $value;
        } else {
            halt('传入参数不正确', true);
        }
    }
    return true;
}

/**
 * 调用Widget
 * @param string $name widget名
 * @param array $data 传递给widget的变量列表，key为变量名，value为变量值
 * @return void
 */
function W($name, $data = array())
{
    $fullName = '\Widget\\' . $name;
    if (!class_exists($fullName)) {
        halt('Widget ' . $name . '不存在');
    }
    $widget = new $fullName();
    $widget->invoke($data);
}

/**
 * 终止程序运行
 * @param string $str 终止原因
 * @param bool $display 是否显示调用栈，默认显示
 * @return void
 */
function halt($str, $display = true)
{
    Log::fatal($str);
    if ($display) {
        echo $str;
    }
    exit;
}

/**
 * 总控类
 */
class SinglePHP
{
    /**
     * 控制器
     * @var string
     */
    private $c;
    /**
     * Action
     * @var string
     */
    private $a;
    /**
     * 单例
     * @var SinglePHP
     */
    private static $_instance;

    /**
     * 构造函数，初始化配置
     * @param array $conf
     */
    private function __construct($conf)
    {
        C($conf);
    }

    /**
     * 私有化克隆函数，防止被克隆
     */
    private function __clone()
    {
    }

    /**
     * 获取单例
     * @param array $conf
     * @return SinglePHP
     */
    public static function getInstance($conf)
    {
        if (!(self::$_instance instanceof self)) {
            self::$_instance = new self($conf);
        }
        return self::$_instance;
    }

    /**
     * 运行应用实例
     * @access public
     * @return void
     */
    public function run()
    {
        try {
            if (C('USE_SESSION') == true) {
                session_start();
            }
            C('APP_FULL_PATH', realpath(getcwd() . DS . C('APP_PATH')));
            require(C('APP_FULL_PATH') . DS . 'common.php');
            spl_autoload_register(array('\Single\SinglePHP', 'autoload'));
            $pathInfo = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '';
            $pathInfoArr = array_filter(explode(DS, trim($pathInfo, DS)));
            $length = count($pathInfoArr);
            if ($length == 0) {
                $this->c = 'index';
            } else {
                $this->c = array_pop($pathInfoArr);
            }
            $dirStr = empty($pathInfoArr) ? '' : implode('\\', $pathInfoArr) . '\\';
            $namespace = '\Controller\\' . $dirStr;
            $controllerClass = $namespace . $this->c;
            if (!class_exists($controllerClass)) {
                halt('控制器' . $controllerClass . '不存在');
            }
            $controller = new $controllerClass();
            if (!method_exists($controller, '_run')) {
                halt('控制器' . $controllerClass . '中方法_run()不存在');
            }
            $begin = microtime(TRUE);
            call_user_func(array($controller, '_run')); //程序入口
            $end = microtime(TRUE);
            if (C('SHOW_LOAD_TIME')) {
                echo sprintf('<br />耗时： %.4f ms', ($end - $begin) * 1000);
            }
        } catch (Exception $e) {
            echo "<br /><br /><br /><font color='red'>程序异常信息：" . $e->getMessage() . '</font><br />';
            echo '出错文件：', $e->getFile(), '<br/>';
            echo '错误行数：', $e->getLine(), '<br/>';
            echo '<pre>出错代码：<br/>' . $e->getTraceAsString() . '</pre>';
            die;
        }
<commit_msg>[M] :  fixed the exception bug!!<commit_after><?php
/**
 * Created by PhpStorm
 * @desc: SinglePHP框架
 * @package: SinglePHP.class.php
 * @author: leandre weibo.com/nly
 * @copyright: copyright(2014) leandre.cn
 * @version: 14/10/27
 */

namespace Single;
date_default_timezone_set('Asia/Shanghai');
/**
 * 获取和设置配置参数 支持批量定义
 * 如果$key是关联型数组，则会按K-V的形式写入配置
 * 如果$key是数字索引数组，则返回对应的配置数组
 * @param string|array $key 配置变量
 * @param array|null $value 配置值
 * @return array|null
 */
function C($key, $value = null)
{
    static $_config = array();
    $args = func_num_args();
    if ($args == 1) {
        if (is_string($key)) { //如果传入的key是字符串
            return isset($_config[$key]) ? $_config[$key] : null;
        }
        if (is_array($key)) {
            if (array_keys($key) !== range(0, count($key) - 1)) { //如果传入的key是关联数组
                $_config = array_merge($_config, $key);
            } else {
                $ret = array();
                foreach ($key as $k) {
                    $ret[$k] = isset($_config[$k]) ? $_config[$k] : null;
                }
                return $ret;
            }
        }
    } else {
        if (is_string($key)) {
            $_config[$key] = $value;
        } else {
            halt('传入参数不正确', true);
        }
    }
    return true;
}

/**
 * 调用Widget
 * @param string $name widget名
 * @param array $data 传递给widget的变量列表，key为变量名，value为变量值
 * @return void
 */
function W($name, $data = array())
{
    $fullName = '\Widget\\' . $name;
    if (!class_exists($fullName)) {
        halt('Widget ' . $name . '不存在');
    }
    $widget = new $fullName();
    $widget->invoke($data);
}

/**
 * 终止程序运行
 * @param string $str 终止原因
 * @param bool $display 是否显示调用栈，默认显示
 * @return void
 */
function halt($str, $display = true)
{
    Log::fatal($str);
    if ($display) {
        echo $str;
    }
    exit;
}

/**
 * 总控类
 */
class SinglePHP
{
    /**
     * 控制器
     * @var string
     */
    private $c;
    /**
     * Action
     * @var string
     */
    private $a;
    /**
     * 单例
     * @var SinglePHP
     */
    private static $_instance;

    /**
     * 构造函数，初始化配置
     * @param array $conf
     */
    private function __construct($conf)
    {
        C($conf);
    }

    /**
     * 私有化克隆函数，防止被克隆
     */
    private function __clone()
    {
    }

    /**
     * 获取单例
     * @param array $conf
     * @return SinglePHP
     */
    public static function getInstance($conf)
    {
        if (!(self::$_instance instanceof self)) {
            self::$_instance = new self($conf);
        }
        return self::$_instance;
    }

    /**
     * 运行应用实例
     * @access public
     * @return void
     */
    public function run()
    {
        try {
            if (C('USE_SESSION') == true) {
                session_start();
            }
            C('APP_FULL_PATH', realpath(getcwd() . DS . C('APP_PATH')));
            require(C('APP_FULL_PATH') . DS . 'common.php');
            spl_autoload_register(array('\Single\SinglePHP', 'autoload'));
            $pathInfo = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '';
            $pathInfoArr = array_filter(explode(DS, trim($pathInfo, DS)));
            $length = count($pathInfoArr);
            if ($length == 0) {
                $this->c = 'index';
            } else {
                $this->c = array_pop($pathInfoArr);
            }
            $dirStr = empty($pathInfoArr) ? '' : implode('\\', $pathInfoArr) . '\\';
            $namespace = '\Controller\\' . $dirStr;
            $controllerClass = $namespace . $this->c;
            if (!class_exists($controllerClass)) {
                halt('控制器' . $controllerClass . '不存在');
            }
            $controller = new $controllerClass();
            if (!method_exists($controller, '_run')) {
                halt('控制器' . $controllerClass . '中方法_run()不存在');
            }
            $begin = microtime(TRUE);
            call_user_func(array($controller, '_run')); //程序入口
            $end = microtime(TRUE);
            if (C('SHOW_LOAD_TIME')) {
                echo sprintf('<br />耗时： %.4f ms', ($end - $begin) * 1000);
            }
        } catch (\Exception $e) {
            echo "<br /><br /><br /><font color='red'>程序异常信息：" . $e->getMessage() . '</font><br />';
            echo '出错文件：', $e->getFile(), '<br/>';
            echo '错误行数：', $e->getLine(), '<br/>';
            echo '<pre>出错代码：<br/>' . $e->getTraceAsString() . '</pre>';
            die;
        }

{'fraction_non_alphanumeric': 0.1743740130836905, 'fraction_numerical': 0.00428603654410106, 'mean_word_length': 1.767478152309613, 'pattern_counts': {'":': 0, '<': 29, '<?xml version=': 0, '>': 43, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2837697', 'n_tokens_mistral': 3140, 'n_tokens_neox': 3188, 'n_words': 580}