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 相关文章推荐
PHP4之COOKIE支持详解
Oct 09 PHP
php数组声明、遍历、数组全局变量使用小结
Jun 05 PHP
php遍历所有文件及文件夹的方法深入解析
Jun 08 PHP
深入解析fsockopen与pfsockopen的区别
Jul 05 PHP
php操作mysqli(示例代码)
Oct 28 PHP
PHP字符串的连接的简单实例
Dec 30 PHP
PHP变量赋值、代入给JavaScript中的变量
Jun 29 PHP
php实现mysql数据库连接操作及用户管理
Nov 08 PHP
php使用include 和require引入文件的区别
Feb 16 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
May 24 PHP
PHP结合Vue实现滚动底部加载效果
Dec 17 PHP
Mac下快速搭建PHP开发环境步骤详解
May 05 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
php中字符查找函数strpos、strrchr与strpbrk用法
2014/11/18 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
jquery 常用操作方法
2010/01/28 Javascript
jquery.lazyload  实现图片延迟加载jquery插件
2010/02/06 Javascript
javascript 精粹笔记
2010/05/09 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
jQuery、zepto、js常用小技巧
2017/02/12 Javascript
在js代码拼接dom对象到页面上的模板总结
2018/10/21 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
2020/03/04 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
2020/12/17 Vue.js
使用setup.py安装python包和卸载python包的方法
2013/11/27 Python
Python制作CSDN免积分下载器
2015/03/10 Python
一些常用的Python爬虫技巧汇总
2016/09/28 Python
Python利用递归和walk()遍历目录文件的方法示例
2017/07/14 Python
python梯度下降法的简单示例
2018/08/31 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
2019/06/17 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
详解Python文件修改的两种方式
2019/08/22 Python
python实现猜数字游戏
2020/03/25 Python
Python FTP文件定时自动下载实现过程解析
2019/11/12 Python
HTML5 新表单类型示例代码
2018/03/20 HTML / CSS
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
Genny意大利官网:意大利高级时装品牌
2020/04/15 全球购物
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
几道Web/Ajax的面试题
2016/11/05 面试题
合作意向书
2014/07/30 职场文书
2014公安机关纪律作风整顿思想汇报
2014/09/13 职场文书
2015中秋节晚会主持词
2015/07/01 职场文书
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书
Redis官方可视化工具RedisInsight安装使用教程
2022/04/19 Redis
Redis高并发缓存架构性能优化
2022/05/15 Redis
详解CSS3浏览器兼容
2022/12/24 HTML / CSS