当前位置:首页>编程日记>正文

[李景山php]每天TP5-20170131-thinkphp5-Request.php-3

本站寻求有缘人接手,详细了解请联系站长QQ1493399855

/*** 获取当前URL 不含QUERY_STRING* @access public* @param string $url URL地址* @return string*/
public function baseUrl($url = null)
{if (!is_null($url) && true !== $url) {$this->baseUrl = $url;return $this;} elseif (!$this->baseUrl) {$str           = $this->url();$this->baseUrl = strpos($str, '?') ? strstr($str, '?', true) : $str;}return true === $url ? $this->domain() . $this->baseUrl : $this->baseUrl;
}// 获取基础 地址/*** 获取当前执行的文件 SCRIPT_NAME* @access public* @param string $file 当前执行的文件* @return string*/
public function baseFile($file = null)
{if (!is_null($file) && true !== $file) {// 设置$this->baseFile = $file;return $this;} elseif (!$this->baseFile) {// 获取$url = '';if (!IS_CLI) {// 非命令行$script_name = basename($_SERVER['SCRIPT_FILENAME']);if (basename($_SERVER['SCRIPT_NAME']) === $script_name) {$url = $_SERVER['SCRIPT_NAME'];} elseif (basename($_SERVER['PHP_SELF']) === $script_name) {$url = $_SERVER['PHP_SELF'];} elseif (isset($_SERVER['ORIG_SCRIPT_NAME']) && basename($_SERVER['ORIG_SCRIPT_NAME']) === $script_name) {$url = $_SERVER['ORIG_SCRIPT_NAME'];} elseif (($pos = strpos($_SERVER['PHP_SELF'], '/' . $script_name)) !== false) {$url = substr($_SERVER['SCRIPT_NAME'], 0, $pos) . '/' . $script_name;} elseif (isset($_SERVER['DOCUMENT_ROOT']) && strpos($_SERVER['SCRIPT_FILENAME'], $_SERVER['DOCUMENT_ROOT']) === 0) {$url = str_replace('\', '/', str_replace($_SERVER['DOCUMENT_ROOT'], '', $_SERVER['SCRIPT_FILENAME']));}}$this->baseFile = $url;}return true === $file ? $this->domain() . $this->baseFile : $this->baseFile;
}// 获取基准 文件/*** 获取URL访问根地址* @access public* @param string $url URL地址* @return string*/
public function root($url = null)
{// 获取 URL 访问根地址if (!is_null($url) && true !== $url) {$this->root = $url;return $this;} elseif (!$this->root) {$file = $this->baseFile();// 首先获取 基础文件if ($file && 0 !== strpos($this->url(), $file)) {// 并且这个 什么 url 跟 这个$file = str_replace('\', '/', dirname($file));// 替换路径}$this->root = rtrim($file, '/');// 去掉最后一个斜杠}return true === $url ? $this->domain() . $this->root : $this->root;// 组合出售
}/*** 获取当前请求URL的pathinfo信息(含URL后缀)* @access public* @return string*/
public function pathinfo()
{if (is_null($this->pathinfo)) {// 如果路径信息为空if (isset($_GET[Config::get('var_pathinfo')])) {// 判断URL里面是否有兼容模式参数$_SERVER['PATH_INFO'] = $_GET[Config::get('var_pathinfo')];unset($_GET[Config::get('var_pathinfo')]);// 获取完成 删除配置文件} elseif (IS_CLI) {// CLI模式下 index.php module/controller/action/params/...$_SERVER['PATH_INFO'] = isset($_SERVER['argv'][1]) ? $_SERVER['argv'][1] : '';}// 写法居然是这样的,安逸 index.php module/controller/action/params// 分析PATHINFO信息if (!isset($_SERVER['PATH_INFO'])) {// 分析 PATHINFO 信息foreach (Config::get('pathinfo_fetch') as $type) { // 遍历获取项目if (!empty($_SERVER[$type])) {// 如果不为空$_SERVER['PATH_INFO'] = (0 === strpos($_SERVER[$type], $_SERVER['SCRIPT_NAME'])) ?substr($_SERVER[$type], strlen($_SERVER['SCRIPT_NAME'])) : $_SERVER[$type];break;}}}$this->pathinfo = empty($_SERVER['PATH_INFO']) ? '/' : ltrim($_SERVER['PATH_INFO'], '/');}return $this->pathinfo;
}// 获取完成/*** 获取当前请求URL的pathinfo信息(不含URL后缀)* @access public* @return string*/
public function path()
{// 获取路径信息if (is_null($this->path)) {$suffix   = Config::get('url_html_suffix');// 首先获取 默认设置的后缀$pathinfo = $this->pathinfo();// 获取 路径信息if (false === $suffix) {// 禁止伪静态// 禁止伪静态访问$this->path = $pathinfo;} elseif ($suffix) {// 去除正常的 URL 后缀// 去除正常的URL后缀$this->path = preg_replace('/.(' . ltrim($suffix, '.') . ')$/i', '', $pathinfo);} else {// 允许任何后缀访问$this->path = preg_replace('/.' . $this->ext() . '$/i', '', $pathinfo);}}return $this->path;
}/*** 当前URL的访问后缀* @access public* @return string*/
public function ext()// 当前访问 URL 后缀
{return pathinfo($this->pathinfo(), PATHINFO_EXTENSION);
}/*** 获取当前请求的时间* @access public* @param bool $float 是否使用浮点类型* @return integer|float*/
public function time($float = false)
{return $float ? $_SERVER['REQUEST_TIME_FLOAT'] : $_SERVER['REQUEST_TIME'];
}// 获取当前 请求的 系统时间/*** 当前请求的资源类型* @access public* @return false|string*/
public function type()// 请求资源类型
{$accept = isset($this->server['HTTP_ACCEPT']) ? $this->server['HTTP_ACCEPT'] : $_SERVER['HTTP_ACCEPT'];// 获取 accept 数据if (empty($accept)) {return false;}foreach ($this->mimeType as $key => $val) {// 遍历循环$array = explode(',', $val);//分开foreach ($array as $k => $v) {// 遍历if (stristr($accept, $v)) {return $key;}}}return false;
}/*** 设置资源类型* @access public* @param string|array  $type 资源类型名* @param string        $val 资源类型* @return void*/
public function mimeType($type, $val = '')// 设置资源类型
{if (is_array($type)) {// 如果是数组$this->mimeType = array_merge($this->mimeType, $type);// 合并数据类型} else {$this->mimeType[$type] = $val;}
}/*** 当前的请求类型* @access public* @param bool $method  true 获取原始请求类型* @return string*/
public function method($method = false)// 获取当前的请求类型
{if (true === $method) {// 获取原始 请求类型 ?// 获取原始请求类型return IS_CLI ? 'GET' : (isset($this->server['REQUEST_METHOD']) ? $this->server['REQUEST_METHOD'] : $_SERVER['REQUEST_METHOD']);} elseif (!$this->method) {// 如果 没有对应的请求类型if (isset($_POST[Config::get('var_method')])) {// 提交 里面设置 请求类型$this->method = strtoupper($_POST[Config::get('var_method')]);$this->{$this->method}($_POST);} elseif (isset($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'])) {//$this->method = strtoupper($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']);} else {// 默认的 这个情况是有的$this->method = IS_CLI ? 'GET' : (isset($this->server['REQUEST_METHOD']) ? $this->server['REQUEST_METHOD'] : $_SERVER['REQUEST_METHOD']);}}return $this->method;
}/*** 是否为GET请求* @access public* @return bool*/
public function isGet()
{return $this->method() == 'GET';
}/*** 是否为POST请求* @access public* @return bool*/
public function isPost()
{return $this->method() == 'POST';
}/*** 是否为PUT请求* @access public* @return bool*/
public function isPut()
{return $this->method() == 'PUT';
}/*** 是否为DELTE请求* @access public* @return bool*/
public function isDelete()
{return $this->method() == 'DELETE';
}/*** 是否为HEAD请求* @access public* @return bool*/
public function isHead()
{return $this->method() == 'HEAD';
}/*** 是否为PATCH请求* @access public* @return bool*/
public function isPatch()
{return $this->method() == 'PATCH';
}/*** 是否为OPTIONS请求* @access public* @return bool*/
public function isOptions()
{return $this->method() == 'OPTIONS';
}/*** 是否为cli* @access public* @return bool*/
public function isCli()
{return PHP_SAPI == 'cli';
}/*** 是否为cgi* @access public* @return bool*/
public function isCgi()
{return strpos(PHP_SAPI, 'cgi') === 0;
}



http://www.coolblog.cn/news/87a296ae3ca82b73.html

相关文章:

  • asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询
  • s7day2学习记录
  • 【求锤得锤的故事】Redis锁从面试连环炮聊到神仙打架。
  • 矿Spring入门Demo
  • 拼音怎么写_老师:不会写的字用圈代替,看到孩子试卷,网友:人才
  • Linux 实时流量监测(iptraf中文图解)
  • Win10 + Python + GPU版MXNet + VS2015 + RTools + R配置
  • 美颜
  • shell访问php文件夹,Shell获取某目录下所有文件夹的名称
  • 如何优雅的实现 Spring Boot 接口参数加密解密?
  • LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络
  • 支撑微博千亿调用的轻量级RPC框架:Motan
  • Mac原生Terminal快速登录ssh
  • 法拉利虚拟学院2010 服务器,法拉利虚拟学院2010
  • java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
  • mysql commit 机制_1024MySQL事物提交机制
  • 2019-9
  • jquery 使用小技巧
  • 科学计算工具NumPy(3):ndarray的元素处理
  • vscode pylint 错误_将实际未错误的py库添加到pylint白名单
  • linux批量创建用户和密码
  • 工程师在工作电脑存 64G 不雅文件,被公司开除后索赔 41 万,结果…
  • js常用阻止冒泡事件
  • newinsets用法java_Java XYPlot.setInsets方法代碼示例
  • 气泡图在开源监控工具中的应用效果
  • 各类型土地利用图例_划重点!国土空间总体规划——土地利用
  • php 启动服务器监听
  • dubbo简单示例
  • Ubuntu13.10:[3]如何开启SSH SERVER服务
  • [iptables]Redhat 7.2下使用iptables实现NAT
  • 【设计模式】 模式PK:策略模式VS状态模式
  • CSS小技巧——CSS滚动条美化
  • JS实现-页面数据无限加载
  • 最新DOS大全
  • Django View(视图系统)
  • 阿里巴巴分布式服务框架 Dubbo
  • 阿里大鱼.net core 发送短信
  • Sorenson Capital:值得投资的 5 种 AI 技术
  • 程序员入错行怎么办?
  • 两张超级大表join优化
  • Arm芯片的新革命在缓缓上演
  • 第九天函数
  • Linux软件安装-----apache安装
  • HDU 5988 最小费用流
  • 《看透springmvc源码分析与实践》读书笔记一
  • nagios自写插件—check_file
  • python3 错误 Max retries exceeded with url 解决方法
  • 正式开课!如何学习相机模型与标定?(单目+双目+鱼眼+深度相机)
  • 通过Spark进行ALS离线和Stream实时推荐
  • 行为模式之Template Method模式