当前位置: 首页 > 后端技术 > PHP

【咸鱼PHP】PHP设计模式-模块化

时间:2023-03-29 15:04:37 PHP

设计模式PHP面向对象模块化:说明:一个类可以说是具有共同特征的对象的集合,而“共性”不仅仅是这些对象是一样,说都是处理共性问题,把问题分解成子问题。这个过程就是模块化的目的:解决一个更复杂问题的某一方面,也就是所谓的单一职责原则。类型,以区分是移动端还是PC端。步骤:分析:如何判断区分?常用装备有哪些?怎么写?怎么写更好更有利于维护?实现:在PHP中使用$_SERVER['HTTP_USER_AGENT'],$_SERVER['HTTP_X_WAP_PROFIle'],$_SERVER['HTTP_VIA'],可以分为UA(代理),设备,浏览器,市面上常见的设备和浏览器:浏览器:Google,IE,Firefox,Oupeng,safair,blackberry设备【这里太多就不一一列举了例如】:android,iso,ipad,ipod等根据以上信息,我们的问题可以分为三部分,判断是否是手机端,获取当前设备,获取当前浏览器实现*HTTP_X_WAP_PROFILE:*手机端UA信息采集可以使用X-WAP-PROFILE,其中包括屏幕大小,数量屏幕上显示的字符,制造商,版本,浏览器型号等。*如果是移动设备,肯定会有'HTTP_X_WAP_PROFILE'的标志,*所以我们可以用PHP来判断是否有$_SERVER['HTTP_X_WAP_PROFILE']确认用户的接入设备类型**HTTP_VIA:*Listfromtheclient哪些代理服务器通过对服务器的响应或相反的方向,*他们使用什么协议发送请求。当客户端请求到达第一个代理服务器时,*服务器会在自己发送的请求中添加一个Via头,并填写自己的相关信息,*当下一个代理服务器收到第一个代理服务器的请求时,会复制自己发送的请求中前一个代理服务器请求的Via头,*并在后面加上自己的相关信息。以此类推,终端服务器收到最后一个代理服务器的请求时,会检查Via头。*将知道请求经过的路由。userAgent=$_SERVER['HTTP_USER_AGENT'];var_dump($this->userAgent);$this->userAgent=strtolower($this->userAgent);$this->deviceLength=count($this->device);$this->browserLength=count($this->browser);/***判断是否是手机端**HTTP_X_WAP_PROFILE:*手机端的UA信息采集可以使用X-WAP-PROFILE,包含屏幕尺寸,屏幕显示字符数,厂商,版本,浏览器型号等*如果是移动设备,则必须有标志'HTTP_X_WAP_PROFILE',*所以我们可以用PHP判断是否有$_SERVER['HTTP_X_WAP_PROFILE']来确认用户的访问设备类型**HTTP_VIA:*列出从客户端到服务器或相反方向的响应通过哪些代理服务器,*他们使用什么协议发送请求。当客户端请求到达第一个代理服务器时,*服务器会在自己发送的请求中添加一个Via头,并填写自己的相关信息,*当下一个代理服务器收到第一个代理服务器的请求时,会复制自己发送的请求中前一个代理服务器请求的Via头,*并在后面加上自己的相关信息。以此类推,终端服务器收到最后一个代理服务器的请求时,会检查Via头。*将知道请求经过的路由。**@returnbool*/publicfunctionis_mobile(){if(empty($this->userAgent)){$is_mobile=false;}elseif($this->findDevice()){$is_mobile=true;}elseif(isset($_SERVER['HTTP_X_WAP_PROFILE'])){返回真;}elseif(isset($_SERVER['HTTP_VIA'])){返回真;}else{$is_mobile=false;}返回$is_mobile;}/***查找当前设备*@returnmixed*/publicfunctionfindDevice(){for($uaSniff=0;$uaSniff<$this->deviceLength;$uaSniff++){if(strstr($this->userAgent,$this->device[$uaSniff])){return$this->device[$uaSniff];}}}/***查找当前浏览器*@returnmixed*/publicfunctionfindBrowser(){for($uaSniff=0;$uaSniff<$this->browserLength;$uaSniff++){if(strstr($this->userAgent,$this->browser[$uaSniff])){return$this->browser[$uaSniff];}}}}本文到此结束,顺便提一个知识点,为什么浏览器的User-agent这么长?感兴趣的朋友可以去【http://www.nowamagic.net/libr...】本文首先感谢大家阅读本文,希望大家多提意见,本人虚心接受!@-@