能不能这样说,目前php所有框架系统都是建立在get传值的基础上的

ziluopao 发布于 2016/05/04 08:55
阅读 602
收藏 0
PHP
为啥这样说呢,因为浏览器地址栏中不传值,php服务器就无法接到值,就无法传到框架中,啥mvc哈,啥url地址接收啊全是扯蛋了。我想javaweb框架也是这样吧!
加载中
1
oxsicn
oxsicn

伪命题 


好比你买了个计算器,找老板退货.说你的计算器不能用.老板一测试,好用啊. 你说,我不按按钮他就不计算,你这计算器就是扯淡根本不能用.


你违背了 "程序的三要素:数据输入、数据处理与数据输出"

当然 你也可以通过别的输入方式 比如post cookie 等等 但是 根据不一样的输入方式适用用途 get 是最适合的





3
南湖船老大
南湖船老大
年轻人,我奉劝你一句,不要再看 discuz 这种垃圾了。。

我看你研究了半个月discuz,就悟出这些,我都替你心痛。。

0
ziluopao
ziluopao

引用来自“xioxin”的评论

伪命题 


好比你买了个计算器,找老板退货.说你的计算器不能用.老板一测试,好用啊. 你说,我不按按钮他就不计算,你这计算器就是扯淡根本不能用.


你违背了 "程序的三要素:数据输入、数据处理与数据输出"

当然 你也可以通过别的输入方式 比如post cookie 等等 但是 根据不一样的输入方式适用用途 get 是最适合的





当然我是从初学者菜鸟的角度来说的。其实很多事情都是建立在简单原理的基础之上的,我主要是想从这个角度来说明框架的基点。

比如很多初学者在学习过程化的框架时还容易理解url地址传值的道理,如

比如建立一个test.php文件,

里面写上


<?php
header("Content-Type:text/html;charset=utf-8");
echo $_GET['name'];




浏览器地址栏中写http://127.0.0.1/test.php?name=张三在,此时网页中会显示出

当然你也可以多写一些,如

如在test.php中写上


<?php
header("Content-Type:text/html;charset=utf-8");
echo $_GET['name'];
echo $_GET['name1'];
echo $_GET['id'];
echo $_GET['claname'];    



浏览器地址栏中写上


http://127.0.0.1/test.php?name=张三&name1=张四&id=59&claname=我就是乱写

然后会显示

你可以用&连接多写一些你原意的玩意。

上面就是简单的get传值。

初学者对于get传值还是容易理解的,因为$_GET就是获取全局作用域(公有作用域)的变量值。

但初学者在学习MVC框架时又发晕了,因为有时地址栏中是没有get传值的,但是页面反而会发生变化,让他们百思不解。其实很多这种框架多是玩了跳转,当然跳转的方法很多,试举一例:

比如建立两个文件,分别是test.php 、testclass.php;在test.php文件中写上


<?php
include './testclass.php';    //注意php的根目录用./表示html页面用../表示,多个点



testclass.php中写上

<?php

echo "/////////////////////";    



此时会显示


这就是变相的跳转,当然了,你也在里面写上js代码做跳转,

如在test.php文件中写上

< ?php  
$url = "http://bbs.lampbrother.net";  
echo "< script language='javascript' 
type='text/javascript'>";  
echo "window.location.href='$url'";  
echo "< /script>";  
?>




又当然了php中有专门做跳转的函数

header()

如在test.php文件中写上

< ?php 
//重定向浏览器 
header("Location: http://bbs.
lampbrother.net"); 
//确保重定向后,后续代码不会被执行 
exit;
?>





还可以在test.php文件中写上

< ?php   
$url = "http://bbs.lampbrother.net"; ?> 
< html>   
< head>   
< meta http-equiv="refresh" content="1;  
url=< ?php echo $url; ?>">   
< /head>   
< body>   
页面只停留一秒……   
< /body> 
< /html>



方法很多!!!

那么框架是如何接收类中的方法并显示方法中所要显示的页面呢?

可以在test.php文件中写上

<?php
header("Content-Type: text/html;charset=utf-8");
include './testclass.php';
$testt = new testclass();
echo $testt ->test();

在testclass.php文件中写上

<?php

class testclass{
    public function test(){
        echo '我就是要显示出来';
    }
}    



显示结果会是

读到这里做为初学者应该明白了框架就是通过引入类再应用页面实例化后再调用类中的方法显示结果的。

还有些框架会在地址栏中写上http://localhost/shop/index.php?act=flea&op=index

此时里面就有类似的get参数传值了,那这就是怎么回事呢?其实也好理解,通过入口文件index.php里面加载的类实例化后,再调用类中的方法比如Base::run();

此时run()方法中再加载一些方法



比如里面有一个方法是加载路由的,它就需要参数,这时地址栏中所传的 act=flea & op=index就派上用场了

比如在此方法中写上

$act_file = realpath(BASE_PATH.'/control/'.$_GET['act'].'.php');
$function = $_GET['op'].'Op';    



这时就会在接收参数后拼接字符串进而显示结果页面。

上面这些就是php中url最原始的简单的接收参数显示结果的逻辑,当然老鸟看了这些会哈哈大笑!不过我想老鸟也是从菜鸟过来的人,何必五十步笑一百步呢!我之所以写这些是启发和我一样的菜鸟在理解上符合逻辑,这样再读那些高深变种似的代码后就不会如坠五里雾中了!

============================================

ziluopao
ziluopao
这里不是比谁学术高明,不是比谁技术了得,否则的话,我劝你还个地方,比如微软那里,比如谷哥那里!
ziluopao
ziluopao
都搞明白了!?还扯啥呢
Narky
Narky
这乱七八糟的都扯的啥玩意?连基础的概念都没搞明白就谈MVC了?
0
ziluopao
ziluopao

那么post能不能传到框架中呢,我有些蠢蠢欲动了,开始做一个实验。

比如我在test.php文件中引入类实例化后调用然后就是这样写

<?php
header("Content-Type: text/html;charset=utf-8");
include './testclass.php';
$name = '张三';
$na=$_POST['name'];


$testt = new testclass();
echo $testt ->test();



在testclass.php文件中写上
<?php

class testclass{
    public function test(){
        echo $na;
    }
}    



但是显示结果却是

看来post传值不适合框架传值!!!



手握华为赛神仙
手握华为赛神仙
扯了那么多,你需要补充下语法知识了。连基本语法都不懂,玩个毛线框架。自己查php的global关键词吧。
0
梅开源
梅开源

管中窥豹!

互联网的基础是get post 为主,还有put delete两个冷门。

php只是比较专注搞互联网,可以有默认不输入数据,如xx.php直接访问

可以输入数据来源于get post cookie(参考_REQUEST),来源于数据库来源于互联网爬取数据

也可以用来处理非http领域问题(如wxphp)



ziluopao
ziluopao
put delete两个冷门指的是啥?
0
Ghostab
Ghostab

楼主可能需要了解一下 Request 的 Method Header  Body 。最好能研究一下Request报文的结构。

个人感觉学习应该从基础的理论学起,基础扎实了,看代码万变不离其宗;基础不扎实,看代码连蒙带猜,大家看了心疼啊

 

ziluopao
ziluopao
嗯,这个提议很中肯,我还真看了,受益非浅!
0
saintatgod
saintatgod

引用来自“ziluopao”的评论

那么post能不能传到框架中呢,我有些蠢蠢欲动了,开始做一个实验。

比如我在test.php文件中引入类实例化后调用然后就是这样写

<?php
header("Content-Type: text/html;charset=utf-8");
include './testclass.php';
$name = '张三';
$na=$_POST['name'];


$testt = new testclass();
echo $testt ->test();



在testclass.php文件中写上
<?php

class testclass{
    public function test(){
        echo $na;
    }
}    



但是显示结果却是

看来post传值不适合框架传值!!!



语法都不会,还来评论
彩虹糖tang
彩虹糖tang
初学还是低点调啊,不然我们写php的脸上扛不住
ziluopao
ziluopao
评论?评啥?论啥,只是一个初学者的帖子怎么扯到这么高的层次上,我突然高兴起来!有人从这么高的角度看。
0
inuxor
inuxor

各位,咱们php程序猿为什么老是被调侃?

这实在太露怯了,什么跟什么啊
0
ziluopao
ziluopao
我从回帖中可以看出很多人其实很自卑!为啥这样说呢,因为潜意识中动不动就把自己搞成那种专家,恨不得自己是行业中的航标水平!其实你心态不端,为啥?一个心态端正的人是不可能天天胆战心惊的担心自己不是站在山尖上的人!在地球中其实你很渺小,小到都看不到你!当然你心中有种不成功就成仁的想法,那更证明我说的对了。
0
it1000001001
it1000001001

推荐你一款由我们团队自己开发的PHP开发框架----zentaoPHP框架,有兴趣的话可以了解下。

http://devel.cnezsoft.com/page/zentaophp.html

开源春哥
开源春哥
回复 @ziluopao : 还有其他的交互方式,比如新版本的浏览器可以用websocket。
开源春哥
开源春哥
回复 @ziluopao : 比如zentaoPHP框架的路由规则:/article-view-123.html 可以解析为:调用article模块的view方法,参数是123,模板是html格式的。 还有其他的一些,比如PUT, DELETE之类的,正常的网页交互中用的较少。一般涉及到web dav这种存储的时候会用到。比如用apache + mod_svn的方式来跑svn服务的时候。
开源春哥
开源春哥
回复 @ziluopao : 浏览器和服务器交互有很多种手段。 GET是比较常见,也比较直观的一种,因为url路径里面都可以直接看到。 POST一般用于表单的提交,附件的上传。 现在MVC框架一般是通过PATH_INFO获取参数的。前提是通过webserver的url重写功能将所有不存在的页面都转发到index.php,然后由index.php解析url地址,得出要调用的模块,方法和参数。
ziluopao
ziluopao
嗯,粗看了一下确实不错,多谢多谢
返回顶部
顶部