BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #27399同步于 2014/8/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

对PHP、smarty的一些疑问

youziboy
2014/8/29镜像同步10 回复
1. $_SERVER这个全局变量是如何被赋值的,我打印出来看到有很多$_SERVER['HTTP_***'] 这样的值是如何加进去的? 这个数组不就是服务器的相关信息么? 2. 用户通过get/post/header方式发送请求,要怎么样将自己的值传给服务器的呢?使用header么? header函数是不是请求、响应时候都可以调用啊? 3. 界面上有个选项可以切换数据展现形式,比如按照横排展现,或者竖排展现,使用了smarty模板技术,那么在切换时候,需要重新发送一次请求么? 我知道MVC架构中,一个model可以对应多个view,但是用起来又晕了。 是不是model数据只需要获得一次,就可以根据界面上的切换控件选择不同展现形式,这个过程就不再需要请求数据,就可以对模板进行渲染,从而展现给用户了呢?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
youziboy机器人#1 · 2014/8/30
对于问题1和问题2,是同一个问题。 应该是请求在经过apache或者nginx时候,这些web server会改写请求报文头吧。 但是对问题3,还不太明白如何实现。 哪位高手帮忙看看啊。
Chon机器人#2 · 2014/8/30
不管Apache还是Nginx,所有的请求还是要交给PHP解释器去处理的,所以不管是获得用户的请求参数还是服务器的参数都是顺理成章的事情。 切换数据格式: 如果在前端完成(不用刷新页面):ajax获取数据,然后js更新页面(smarty是在后端执行的,在这里用不上)。 如果在后端完成(需要重新载入页面):重新发起请求,让后端的PHP代码生成新的页面(smarty在这里能用上)。 楼主还是先了解一下HTTP吧。 p.s.本人不懂PHP,以上内容都是我瞎编的。
tt82238971机器人#3 · 2014/8/31
关于1、2,看下面的链接 http://www.php-internals.com/book/?p=chapt03/03-03-pre-defined-variable
sharpzhao机器人#4 · 2014/8/31
第一第二 推荐看看http相关知识 第三个有各种实现方法 前端自动改变 从新请求 首先 model是用来处理数据的 所以和怎么展现一点关系都没有 可以通过渲染不同的view来实现 也可以判断潜入不同的css来实现当然也可以前端js重新排(个人感觉不太合适) 发自「贵邮」
youziboy机器人#5 · 2014/8/31
谢谢,第一个、第二个问题我已经弄明白了。 关于第三个我还是有些疑问哈,或许我之前没有描述清楚: 目前我现有的逻辑是这样: 1.用户在1.html中输入内容,然后提交表单,PHP代码进行完逻辑运算后,得到数据$dataInPhp。 2. smartyobj->assign('data', $dataInPhp); //这里data是一个很大的数组。 smartyobj->display('2.tpl'); //这个2.tpl是根据$_GET参数来选择出来的。 3. 这样再将模板渲染后成页面2.html传给客户端。(当然系统自己去做) 然后我现在想在2.html界面中,增加了一个显示效果的控制开关(应该是修改模板文件2.tpl),用户切换显示效果,就能直接去渲染模板文件3.tpl。 由于获得$dataInPhp的过程相当复杂,处于性能上的考虑,不希望在走一遍获取$dataInPhp的逻辑,而是直接获得模板后,进行渲染。 就是这样的需求。不知道我描述清楚没有。 【 在 sharpzhao 的大作中提到: 】 : 第一第二 推荐看看http相关知识 第三个有各种实现方法 前端自动改变 从新请求 首先 model是用来处理数据的 所以和怎么展现一点关系都没有 可以通过渲染不同的view来实现 也可以判断潜入不同的css来实现当然也可以前端js重新排(个人感觉不太合适) : 发自「贵邮」
weiyitheonly机器人#6 · 2014/8/31
把$dataInPhp缓存起来呗。。。 既然要重新渲染页面,你的逻辑就还得执行一次。不把数据存起来就只能重新算一次。
weiyitheonly机器人#7 · 2014/8/31
不过从楼主在这个楼里面的两个贴的内容看,楼主好像把有些概念理解偏了
youziboy机器人#8 · 2014/8/31
怎么缓存啊?用memcache? 另外,我对一些基本概念是理解的有点问题。还请多多指正啊,或者给个链接学习一下啊。。 多谢啊 【 在 weiyitheonly 的大作中提到: 】 : 把$dataInPhp缓存起来呗。。。 : 既然要重新渲染页面,你的逻辑就还得执行一次。不把数据存起来就只能重新算一次。
youziboy机器人#9 · 2014/8/31
摘自网上" 使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。" 我项目中其实就是想做成这样啊。 上面柱状图、饼图样式类似我的smarty设计好的模板。 那么图中的数据就是我要填充进去的。。 这种情况下PHP+smarty如何做到呢,最好考虑下性能。 【 在 weiyitheonly 的大作中提到: 】 : 把$dataInPhp缓存起来呗。。。 : 既然要重新渲染页面,你的逻辑就还得执行一次。不把数据存起来就只能重新算一次。