您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

子类调用父类中的方法可以阻止子类的后续程序执行吗?

2025/8/17 11:20:03发布29次查看
这个疑惑起因于tp中的ajaxreturn方法,我在别的框架中也想借鉴一下这样的方式,但是不才,遇到了一些问题
class a { public $num = 2; public function return_num() { return $this->num; }}class b extends a{ public function return_a_mum() { $this->return_num(); echo 222; //这里不让他运行 }}$b = new b();$a = $b->return_a_mum();echo $a;/*这里输出$a是222;*/

用过tp的同学都知道,$this->ajaxreturn前面并不需要加return,而我这段代码想要返回a类中的num值,必须要在a类调用b类的return_num方法前面加上return,请问tp是如何做到的,子类中调用父类中的方法获得数据并停止子类后续代码的执行?
回复内容: 这个疑惑起因于tp中的ajaxreturn方法,我在别的框架中也想借鉴一下这样的方式,但是不才,遇到了一些问题
class a { public $num = 2; public function return_num() { return $this->num; }}class b extends a{ public function return_a_mum() { $this->return_num(); echo 222; //这里不让他运行 }}$b = new b();$a = $b->return_a_mum();echo $a;/*这里输出$a是222;*/

用过tp的同学都知道,$this->ajaxreturn前面并不需要加return,而我这段代码想要返回a类中的num值,必须要在a类调用b类的return_num方法前面加上return,请问tp是如何做到的,子类中调用父类中的方法获得数据并停止子类后续代码的执行?
因为你调用的方法里面有exit,die之类的方法呗...
一些特定的输出有格式要求,所以此类方法往往内置了exit,例如json, xml等,最常见的就是url跳转了,使用header函数发送跳转指令后必须exit,否则后面又输出一大堆。
貌似yii这个很个性的框架就有 $controller->redirect()和$controller->redirectandexit()两个方法,不知道的人调用了前者就会死很惨。
而你这个就是,返回json,如果不退掉很可能json后面就会增加了额外字符,造成数据格式非法。
这种问题看下thinkphp的源码就知道了。
protected function ajaxreturn($data) { // 返回json数据格式到客户端 包含状态信息 header('content-type:application/json; charset=utf-8'); exit(json_encode($data));}
class a{ public $num = 2; public function return_num() { return $this->num; }}class b extends a{ public function return_a_mum(&$data) { $data = $this->return_num(); }}$b = new b();$b->return_a_mum($a);echo $a;
输出2
你看看是不是你要的效果
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product