123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- <?php
- use Qii\Autoloader\Import;
- use Qii\Autoloader\Psr4;
- use Qii\Language\Loader;
- if (!function_exists('getallheaders')) {
- /**
- * Get all HTTP header key/values as an associative array for the current request.
- *
- * @return string[string] The HTTP header key/value pairs.
- */
- function getallheaders()
- {
- $headers = array();
- $copy_server = array(
- 'CONTENT_TYPE' => 'Content-Type',
- 'CONTENT_LENGTH' => 'Content-Length',
- 'CONTENT_MD5' => 'Content-Md5',
- );
- foreach ($_SERVER as $key => $value) {
- if (substr($key, 0, 5) === 'HTTP_') {
- $key = substr($key, 5);
- if (!isset($copy_server[$key]) || !isset($_SERVER[$key])) {
- $key = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', $key))));
- $headers[$key] = $value;
- }
- } elseif (isset($copy_server[$key])) {
- $headers[$copy_server[$key]] = $value;
- }
- }
- if (!isset($headers['Authorization'])) {
- if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) {
- $headers['Authorization'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION'];
- } elseif (isset($_SERVER['PHP_AUTH_USER'])) {
- $basic_pass = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : '';
- $headers['Authorization'] = 'Basic ' . base64_encode($_SERVER['PHP_AUTH_USER'] . ':' . $basic_pass);
- } elseif (isset($_SERVER['PHP_AUTH_DIGEST'])) {
- $headers['Authorization'] = $_SERVER['PHP_AUTH_DIGEST'];
- }
- }
- return $headers;
- }
- }
- /**
- * Qii ...
- * @return null|Qii|Qii\Autoloader\Psr4
- */
- function _Qii()
- {
- return \Qii::getInstance();
- }
- /**
- * \Qii::i(.., ...)
- * @return mixed
- */
- function _i()
- {
- return call_user_func_array('\Qii::i', func_get_args());
- }
- /**
- * throw new Exception
- */
- function _e()
- {
- return call_user_func_array('\Qii::e', func_get_args());
- }
- /**
- * Chrome logs
- * @return mixed
- */
- function _log() {
- return call_user_func_array('\Qii\Library\Chrome::log', func_get_args());
- }
- /**
- * 加载语言包
- * @param string $language 语言包
- * @param string $dir 路径
- */
- function _language($language, $dir = '')
- {
- Loader::getInstance()->load($language, $dir);
- }
- /**
- * \Qii_Config_Register:: get or set
- * @param $key
- * @param null $val
- * @return mixed|void|null
- */
- function _config($key, $val = null)
- {
- if($val === null)
- {
- return \Qii\Config\Register::get($key);
- }
- return \Qii\Config\Register::set($key, $val);
- }
- /**
- * Adds a base directory for a namespace prefix.
- *
- * @param string $prefix The namespace prefix.
- * @param string $baseDir A base directory for class files in the
- * namespace.
- * @param bool $prepend If true, prepend the base directory to the stack
- * instead of appending it; this causes it to be searched first rather
- * than last.
- * @return void
- */
- function _addNamespace($prefix, $baseDir, $prepend = false)
- {
- _qii()->addNamespace($prefix, $baseDir, $prepend);
- }
- /**
- * 加载loader 可以直接加载指定类
- */
- function _loader($class = null)
- {
- $args = func_get_args();
- if($class != null){
- return call_user_func_array(array(Psr4::getInstance(), 'loadClass'), $args);
- }
- return Psr4::getInstance();
- }
- /**
- * load library
- * @param $name
- * @return mixed
- */
- function _library($name) {
- return \_loadClass("\Qii\Library\\". $name);
- }
- /**
- * 简便的loadClass方法
- * \Qii\Autoloader\Psr4::getInstance()->loadClass(.., ..);
- */
- function _loadClass()
- {
- $args = func_get_args();
- return call_user_func_array(array(\_loader(), 'loadClass'), $args);
- }
- /**
- * 根据文件前缀获取文件路径
- *
- * @param string $file 文件名
- */
- function _getFileByPrefix($file)
- {
- return \_loader()->getFileByPrefix($file);
- }
- /**
- * 数据库操作类
- *
- * @param Qii_Driver_Rules $rule 规则
- * @param array|null $privateKey 主键
- * @param array|null $fieldsVal 值
- * @return mixed
- */
- function _DBDriver(\Qii\Driver\Rules $rule, $privateKey = null, $fieldsVal = null)
- {
- $rules = _loadClass('Qii\Driver\Easy')->_initialize();
- if ($privateKey) $rules->setPrivateKey($privateKey);
- $rules->setRules($rule);
- if ($fieldsVal) $rules->setFieldsVal($fieldsVal);
- return $rules;
- }
- /**
- * _include include文件
- */
- function _include($files){
- return Import::includes($files);
- }
- function _require($files)
- {
- return Import::requires($files);
- }
- /**
- * 检测字符的编码
- *
- * @param string $str
- * @return false|string
- */
- function detectEncode($str) {
- return mb_detect_encoding($str, array('ASCII', 'UTF-8', 'GB2312', 'GBK', 'BIG5'));
- }
- /**
- * 将字符串转换成指定编码
- *
- * @param string $str 需要转换的字符串
- * @param string $to 转换到的编码
- * @return string
- */
- function convertCode($str, $to)
- {
- $fromCode = detectEncode($str);
- if($fromCode == $to) return $str;
- return mb_convert_encoding($str, $to, $fromCode);
- }
- /**
- * 将字符串转换成格式
- *
- * @param string $str 需要转换的字符串
- * @return string
- */
- function toUTF8($str)
- {
- return convertCode($str, 'UTF-8');
- }
- /**
- * 将字符串转换成GBK
- *
- * @param string $str 文本
- * @return string
- */
- function toGBK($str)
- {
- return convertCode($str, 'GBK');
- }
- /**
- * 字符串是否包含
- *
- * @param string $haystack
- * @param string $needle
- * @return bool
- */
- function strContains(string $haystack, string $needle)
- {
- return '' === $needle || false !== strpos($haystack, $needle);
- }
- /**
- * 以xxx开头
- * @param string $haystack
- * @param string $needle
- * @return bool
- */
- function strStartsWith($haystack, $needle)
- {
- return 0 === strncmp($haystack, $needle, \strlen($needle));
- }
- /**
- * 以xx结尾
- * @param string $haystack
- * @param string $needle
- * @return bool
- */
- function strEndsWith($haystack, $needle)
- {
- if ('' === $needle || $needle === $haystack) {
- return true;
- }
- if ('' === $haystack) {
- return false;
- }
- $needleLength = \strlen($needle);
- return $needleLength <= \strlen($haystack) && 0 === substr_compare($haystack, $needle, -$needleLength);
- }
|