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函数memory_get_usage获取PHP内存清耗量的方法
Dec 06 PHP
php正则表达匹配中文问题分析小结
Mar 25 PHP
php时间戳格式化显示友好的时间函数分享
Oct 21 PHP
php中adodbzip类实例
Dec 08 PHP
php从memcache读取数据再批量写入mysql的方法
Dec 29 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
Nov 05 PHP
php导出生成word的方法
Dec 25 PHP
php判断邮箱地址是否存在的方法
Feb 13 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
Oct 26 PHP
PHP数组去重的更快实现方式分析
May 09 PHP
php+mysql实现的无限分类方法类定义与使用示例
May 27 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
支持数组的ADDSLASHES的php函数
2010/02/16 PHP
解析PHP中ob_start()函数的用法
2013/06/24 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
php导入excel文件到mysql数据库的方法
2015/01/14 PHP
详解WordPress中添加友情链接的方法
2016/05/21 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
使javascript也能包含文件
2006/10/26 Javascript
js更优雅的兼容
2010/08/12 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
jquery基本选择器匹配多个元素的实现方法
2016/09/05 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
微信小程序实现图片压缩功能
2018/01/26 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
JS document form表单元素操作完整示例
2020/01/13 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
详解python 拆包可迭代数据如tuple, list
2017/12/29 Python
将Django项目部署到CentOs服务器中
2018/10/18 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
在Python中预先初始化列表内容和长度的实现
2019/11/28 Python
Python netmiko模块的使用
2020/02/14 Python
Python使用configparser读取ini配置文件
2020/05/25 Python
浅谈keras中的keras.utils.to_categorical用法
2020/07/02 Python
Django怎么在admin后台注册数据库表
2020/11/14 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
一款利用html5和css3实现的3D滚动特效的教程
2015/01/04 HTML / CSS
美国滑板店:Tactics
2020/11/08 全球购物
小学美术教学反思
2014/02/01 职场文书
社区娱乐活动方案
2014/08/21 职场文书
2015年建筑工作总结报告
2015/05/04 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
2016猴年春节慰问信
2015/11/30 职场文书
Pygame Rect区域位置的使用(图文)
2021/11/17 Python
动画「半妖的夜叉姬」新BD特典图公开
2022/03/22 日漫
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers