Thinkphp框架开发移动端接口(2)


Posted in PHP onAugust 18, 2016

接着上一篇介绍Thinkphp框架开发移动端接口(1),另外我们还可以通过ThinkPHP实现移动端访问自动切换主题模板,这样也可以做到移动端访问

ThinkPHP的模板主题机制,如果只是在PC,只要需修改 DEFAULT_THEME (新版模板主题默认是空,表示不启用模板主题功能)配置项就可以方便的实现多模板主题切换。

但对于移动端和PC端,也许你会设计完全不同的主题风格,且针对不同的来路提供不同的渲染方式,其中一种比较流行的方法是“响应式设计”,但就本人经历而言,要实现完全的“响应式设计”并不是那么容易,且解决兼容问题也是个难题,假设是大型站点,比如:淘宝、百度、拍拍这些,响应式设计肯定是满足不了需求的,而是需要针对手机访问用户提供单独的手机网站。

ThinkPHP 完全可以实现,而且相当简单。和TPM的智能模版切换引擎一样,只要对来路进行判断处理即可。

1、将 ismobile() 加入到{项目/Common/common.php}

function ismobile() {
 // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
 if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
 return true;
 
 //此条摘自TPM智能切换模板引擎,适合TPM开发
 if(isset ($_SERVER['HTTP_CLIENT']) &&'PhoneClient'==$_SERVER['HTTP_CLIENT'])
 return true;
 //如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
 if (isset ($_SERVER['HTTP_VIA']))
 //找不到为flase,否则为true
 return stristr($_SERVER['HTTP_VIA'], 'wap') ? true : false;
 //判断手机发送的客户端标志,兼容性有待提高
 if (isset ($_SERVER['HTTP_USER_AGENT'])) {
 $clientkeywords = array(
  'nokia','sony','ericsson','mot','samsung','htc','sgh','lg','sharp','sie-','philips','panasonic','alcatel','lenovo','iphone','ipod','blackberry','meizu','android','netfront','symbian','ucweb','windowsce','palm','operamini','operamobi','openwave','nexusone','cldc','midp','wap','mobile'
 );
 //从HTTP_USER_AGENT中查找手机浏览器的关键字
 if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
  return true;
 }
 }
 //协议法,因为有可能不准确,放到最后判断
 if (isset ($_SERVER['HTTP_ACCEPT'])) {
 // 如果只支持wml并且不支持html那一定是移动设备
 // 如果支持wml和html但是wml在html之前则是移动设备
 if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) {
  return true;
 }
 }
 return false;
 }

2、在{项目/Lib/}创建一个 CommonAction.php,如果你的项目已公共控制器,则无需创建,直接加在里面即可。

Class CommonAction extends Action{
 Public function _initialize(){
 //移动设备浏览,则切换模板
 if (ismobile()) {
  //设置默认默认主题为 Mobile
  C('DEFAULT_THEME','Mobile');
 }
 //............你的更多代码.......
 }
 }

通过以上2种方式均可实现移动端访问,一种是原生,一种是伪原生,小伙伴们根据自己的项目需求来选择吧。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
通过对服务器端特性的配置加强php的安全
Oct 09 PHP
php heredoc和phpwind的模板技术使用方法小结
Mar 28 PHP
php面向对象全攻略 (四)构造方法与析构方法
Sep 30 PHP
php与mysql建立连接并执行SQL语句的代码
Jul 04 PHP
php中导出数据到excel时数字变为科学计数的解决方法
Feb 03 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
Nov 28 PHP
Smarty中常用变量操作符汇总
Oct 27 PHP
PHP中的替代语法介绍
Jan 09 PHP
Linux系统下PHP-FPM的安装和配置教程
Aug 17 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
PHP导出带样式的Excel示例代码
Aug 28 PHP
tp5.1框架数据库子查询操作实例分析
May 26 PHP
Thinkphp框架开发移动端接口(1)
Aug 18 #PHP
PHP Ajax JavaScript Json获取天气信息实现代码
Aug 17 #PHP
PHP文件下载实例代码浅析
Aug 17 #PHP
PHP Ajax实现无刷新附件上传
Aug 17 #PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
Aug 17 #PHP
全面解析PHP验证码的实现原理 附php验证码小案例
Aug 17 #PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
Aug 17 #PHP
You might like
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
PHP之COOKIE支持详解
2010/09/20 PHP
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
2014/06/25 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
Javascript var变量隐式声明方法
2009/10/19 Javascript
优化javascript的执行速度
2010/01/23 Javascript
验证javascript中Object和Function的关系的三段简单代码
2010/06/27 Javascript
js以对象为索引的关联数组
2010/07/04 Javascript
js+JQuery返回顶部功能如何实现
2012/12/03 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
2013/10/29 Javascript
Jquery实现图片预加载与延时加载的方法
2014/12/22 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
2015/12/31 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
js手动播放图片实现图片轮播效果
2016/09/17 Javascript
jQuery简单倒计时效果完整示例
2016/09/20 Javascript
微信小程序 向左滑动删除功能的实现
2017/03/10 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
写一个Vue Popup组件
2019/02/25 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
python实现的各种排序算法代码
2013/03/04 Python
python合并文本文件示例
2014/02/07 Python
使用django-suit为django 1.7 admin后台添加模板
2014/11/18 Python
Python字符串格式化的方法(两种)
2017/09/19 Python
同时安装Python2 &amp; Python3 cmd下版本自由选择的方法
2017/12/09 Python
详解python调用cmd命令三种方法
2019/07/08 Python
Python3内置模块之base64编解码方法详解
2019/07/13 Python
Python实现图像的垂直投影示例
2020/01/17 Python
python3 re返回形式总结
2020/11/20 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
送给他或她的礼物:FUN.com
2018/08/17 全球购物
党员弘扬焦裕禄精神思想汇报
2014/09/10 职场文书
“向国旗敬礼”主题班会活动设计方案
2014/09/27 职场文书
《自己去吧》教学反思
2016/02/16 职场文书
react antd实现动态增减表单
2021/06/03 Javascript