array('File\\Path','create'), 'page' => array('Page\\Main','getPage'), 'total' => array('Page\\Main','getTotal'), 'url' => array('Http\\Url','get'), 'location' => array('Http\\Url','location'), 'input' => array('Http\\Input','get'), 'preInput' => array('Http\\Input','prefix'), 'setInput' => array('Http\\Input','set'), 'abert' => array('Http\\Output','abert'), 'out' => array('Http\\Output','result'), 'export' => array('Http\\Output','export'), 'load' => array('Routing\\Load','get'), 'object' => array('Routing\\Load','object'), 'config' => array('Config\\Load','get'), 'project' => array('Config\\Project','load'), 'debug' => array('Debug\\Process','wait'), 'view' => array('Template\\View','get'), ); /** * 设置循环里每行不同的值 * @param string $value * @param string $index * * @return array */ static public function lace($value, $index, $key = 2, $num = 0) { $value = explode(',', $value); if(!isset($value[1])) { $value[1] = ''; } if($index > 0 && $index%$key == $num) { return $value[0]; } else { return $value[1]; } } /** * 设置循环里最新一条数据的值 * @param string $value * @param string $index * * @return array */ static public function first($value, $index) { if($index == 0) { return $value; } } /** * 设置循环里最后一条数据的值 * @param string $value * @param string $index * @param string $total * * @return array */ static public function last($value, $index, $total) { if($index == $total) { return $value; } } /** * 获取assets的文件网络路径 * @param string $value * @param string $type * * @return array */ static public function assets($value, $type = 'css') { return parent::$global['host'][$type] . $value; } /** * 生成table * @param string $thead * @param string $tbody * @param string $class * * @return array * static public function table($thead, $tbody, $class = '') { $result = ''; foreach($thead as $k => $v) { $result .= ''; } $result .= ''; foreach($tbody as $k => $v) { $result .= ''; } $result .= '
' . $v . '
' . $k . '' . $v . '
'; return $result; } /** * 生成table * @param string $data * @param string $class * * @return array */ static public function table($data, $class = '') { if($class) { $style = 'class='.$class.''; } else { $style = 'border=1 width=100% height=100%'; } $html = ''; foreach($data as $k => $v) { if(is_array($v)) { $v = self::table($v, $class); //$v = var_export($v, true); } $html .= ''; } $html .= '
'.$k.''.$v.'
'; return $html; } /** * 获取pic * @param string $value * @param string $index * * @return array */ static public function pic($pic, $name) { if(strpos($pic, '_t') !== false) { $temp = explode('_', $pic); $pic = $temp[0] . '_' . $name . '.jpg'; } return $pic; } /** * 获取_param * @param string $value * @param string $index * * @return array */ static public function param($name) { if(isset(Maze::$global['base']['_param'])) { if(isset(Maze::$global['base']['_param']['add_' . $name])) { return Maze::$global['base']['_param']['add_' . $name]; } if(isset(Maze::$global['base']['_param']['set_' . $name])) { return Maze::$global['base']['_param']['set_' . $name]; } } return false; } /** * 获取ip * * @return string */ static public function ip() { if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $ip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) { $ip = getenv('REMOTE_ADDR'); } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) { $ip = $_SERVER['REMOTE_ADDR']; } return preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : ''; } /** * 获取ua * * @return string */ static public function ua() { return $_SERVER['HTTP_USER_AGENT']; } /** * 运维程序 * * @return string */ static public function daemon($interface, $project = false) { if(strpos($interface, 'http://') !== false) { system('curl "' . $interface . '" > /dev/null &'); return; } $project = $project ? $project : MAZE_PROJECT_NAME; $path = self::load('manage/project.path', $project); if(strpos($path, 'http://') !== false) { //self::curl($path . $interface); system('curl "' . $path . $interface . '" > /dev/null &'); } else { # ?和&无法解析 $interface = str_replace(array('?', '&'), array('__', '^'), $interface); system('php ' . $path . 'index.php -send ' . $interface . ' > /dev/null &'); } } static public function mdate($num) { if($num <= 0) { return '0S'; } $num = time() - $num; //$num = 2*3600*24 + 1000; if($num <= 60) { return $num . 'S'; } $config = array ( //array(3600*24, 'D'), array(3600, 'H'), array(60, 'M'), array(1, 'S') ); $result = ''; foreach($config as $k => $v) { if($num > $v[0]) { $value = intval($num/$v[0]); $num = $num - $v[0]*$value; $result .= $value . $v[1] . ' '; } } return $result; } /** * 加入到cron中 * * @return string */ static public function cron($name, $ldate, $interface, $time = 0, $project = false, $update = true) { if($ldate > 0) { $ldate = date('Y-m-d H:i:s', $ldate); } $info = Maze::load('manage/cron-getOne', array('where_project' => $project, 'where_interface' => $interface)); if($info) { if($update) { $update = array(); $update['set_name'] = $name; $update['set_ldate'] = $ldate; $update['set_interface'] = $interface; $update['set_time'] = $time; $update['set_project'] = $project; $update['set_state'] = 1; $update['where_id'] = $info['id']; Maze::load('manage/cron-update', $update); } } else { $update['add_name'] = $name; $update['add_ldate'] = $ldate; $update['add_interface'] = $interface; $update['add_time'] = $time; $update['add_project'] = $project; Maze::load('manage/cron-insert', $update); } } /** * 字符串截取 * @param string $string * @param string $length * @param string $etc * * @return array */ static public function cut($string, $length = 80, $etc = '...') { $result = ''; $string = html_entity_decode(trim(strip_tags($string)), ENT_QUOTES, 'utf-8'); for($i = 0, $j = 0; $i < strlen($string); $i++) { if($j >= $length) { for($x = 0, $y = 0; $x < strlen($etc); $x++) { if($number = strpos(str_pad(decbin(ord(substr($string, $i, 1))), 8, '0', STR_PAD_LEFT), '0')) { $x += $number - 1; $y++; } else { $y += 0.5; } } $length -= $y; break; } if($number = strpos(str_pad(decbin(ord(substr($string, $i, 1))), 8, '0', STR_PAD_LEFT), '0')) { $i += $number - 1; $j++; } else { $j += 0.5; } } for($i = 0; (($i < strlen($string)) && ($length > 0)); $i++) { if($number = strpos(str_pad(decbin(ord(substr($string, $i, 1))), 8, '0', STR_PAD_LEFT), '0')) { if($length < 1.0) { break; } $result .= substr($string, $i, $number); $length -= 1.0; $i += $number - 1; } else { $result .= substr($string, $i, 1); $length -= 0.5; } } $result = htmlentities($result, ENT_QUOTES, 'utf-8'); if($i < strlen($string)) { $result .= $etc; } return $result; } /** * 执行hack的值 * @param string $value * @param string $index * @param string $total * * @return array */ static public function hack($key) { if(isset(parent::$global['hack'][$key])) { return parent::$global['hack'][$key]; } } /** * 注册maze类库里的常用类,方便使用 * @param string $name * @param array $param * * @return mixed */ static public function __callStatic($name, $param = array()) { if(isset(self::$register[$name])) { $class = 'Maze\\' . self::$register[$name][0]; $method = self::$register[$name][1]; if(isset($param[2])) { return $class::$method($param[0], $param[1], $param[2]); } elseif(isset($param[1])) { return $class::$method($param[0], $param[1]); } elseif(isset($param[0])) { return $class::$method($param[0]); } else { return $class::$method(); } } } static public function curl($url, $param = false, $type = '') { //初始化 $ch = curl_init(); //设置选项,包括URL curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); if($param) { // post数据 curl_setopt($ch, CURLOPT_POST, 1); if($type == 'json') { # 中文不用unicode编码 $string = str_replace("\\/", "/", json_encode($param)); $search = "#\\\u([0-9a-f]+)#ie"; if(strpos(strtoupper(PHP_OS), 'WIN') === false) { $replace = "iconv('UCS-2BE', 'UTF-8', pack('H4', '\\1'))";//LINUX } else { $replace = "iconv('UCS-2', 'UTF-8', pack('H4', '\\1'))";//WINDOWS } $param = preg_replace($search, $replace, $string); //$param = json_encode($param, JSON_UNESCAPED_UNICODE); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($param)) ); } //print_r($param);die; // post的变量 @curl_setopt($ch, CURLOPT_POSTFIELDS, $param); } //执行并获取HTML文档内容 $output = curl_exec($ch); //释放curl句柄 curl_close($ch); //打印获得的数据 return $output; } static public function weixin() { if(strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) { return true; } return false; } static public function mobile() { $_SERVER['ALL_HTTP'] = isset($_SERVER['ALL_HTTP']) ? $_SERVER['ALL_HTTP'] : ''; $mobile_browser = '0'; if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|iphone|ipad|ipod|android|xoom)/i', strtolower($_SERVER['HTTP_USER_AGENT']))) { $mobile_browser++; } if((isset($_SERVER['HTTP_ACCEPT'])) && (strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') !== false)) { $mobile_browser++; } if(isset($_SERVER['HTTP_X_WAP_PROFILE'])) { $mobile_browser++; } if(isset($_SERVER['HTTP_PROFILE'])) { $mobile_browser++; } $mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'],0,4)); $mobile_agents = array( 'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac', 'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno', 'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-', 'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-', 'newt','noki','oper','palm','pana','pant','phil','play','port','prox', 'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar', 'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-', 'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp', 'wapr','webc','winw','winw','xda','xda-' ); if(in_array($mobile_ua, $mobile_agents)) { $mobile_browser++; } if(strpos(strtolower($_SERVER['ALL_HTTP']), 'operamini') !== false) { $mobile_browser++; } // Pre-final check to reset everything if the user is on Windows if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows') !== false) { $mobile_browser=0; } // But WP7 is also Windows, with a slightly different characteristic if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows phone') !== false) { $mobile_browser++; } if($mobile_browser>0) { return true; } else { return false; } } static public function maketime($v) { if(!$v) return ''; if(is_numeric($v)) return $v; if(is_array($v)) { $v = $v[1]; } if(strstr($v, ' ')) { $t = explode(' ', $v); $v = $t[0]; $s = explode(':', $t[1]); } else { $s = array(0,0,0); } if(strstr($v, '-')) { $t = explode('-', $v); } elseif(strstr($v, '/')) { $u = explode('/', $v); $t[0] = $u[2]; $t[1] = $u[0]; $t[2] = $u[1]; } if(!isset($t)) { $t = array(0,0,0); } $v = mktime($s[0], $s[1], $s[2], $t[1], $t[2], $t[0]); return $v; } /** * 生成随机码 */ static function code($num = 4) { $codes = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; $code=""; for($i=1;$i<=$num;$i++) { $code.=$codes{rand(0,61)}; } return $code; } }