#2 jake
再看手册
http://www.speedphp.com/spargs-post-get.html刚学PHP,要养成看手册的习惯,SP的手册,还有PHP手册。
2011-10-14 17:24:16
#4 cooc123
$this->spArgs("name", "jake");
我想说的 是 怎样执行的get方法
2011-10-14 18:02:04
#7 jake
看spController.php文件第204行,使用的是PHP自带的$_GET/$_POST/$_REQUEST等方法。
2011-10-17 10:23:05
#9 jake
$this->spArgs("name", "jake"); 和 $_GET['name'] 差不多。
参考手册:
http://www.speedphp.com/spargs-post-get.html建议理清楚自己想问的问题再提问。
2011-10-17 15:18:20
#10 ltotal
当你执行$this->spArgs("name", "jake");时,由于spArgs这个方法是不存在于spController类里面的,这时,类里的__call($name, $args)这个魔术方法会被自动调用,$name参数是要调用的原本不存在的方法名(这里是'spArgs'),$args则是要传递给方法的参数(这里是array('name','jake'))。先看spController里的__call()函数:
public function __call($name, $args)
{
if(in_array($name, $GLOBALS['G_SP']["auto_load_controller"])){
return spClass($name)->__input($args);
}elseif(!method_exists( $this, $name )){
spError("方法 {$name}未定义!
请检查是否控制器类(".get_class($this).")与数据模型类重名?");
}
}
在SP的核心配置文件spConfig.php里‘auto_load_controller’默认配置好了一个‘spArgs’作为控制器自动加载的扩展类名,所以__call()执行的结果是 return spClass('spArgs')->__input(array('name','jake'));
接着执行到spArgs类的__input方法,将$args数组打散成各参数($name, $default,$method),然后就执行到get方法了,$this->get($name, $default, $method); 最后返回执行结果。。。
2011-10-17 15:37:23
#11 cooc123
JAKE 不知道是我问的不清楚,还是你没看懂,
对于 ltotal 回答的正是我要问的,非常感谢。
2011-10-18 09:34:02
#12 cooc123
回复 10 ltotal JAKE 不知道是我问的不清楚,还是你没看懂,
对于 ltotal 回答的正是我要问的,非常感谢。
2011-10-18 09:34:18
#15 phpha
回复 12 cooc123 呵呵,还是建议你先去熟悉一下PHP的基本知识。虽然SP框架简单,但还是要以PHP为基础的。。。
2011-10-18 11:12:37