• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 3年前 (2022-01-23) 20次浏览 已收录 0个评论
文章目录[隐藏]

这个疑惑起因于Tp中的ajaxReturn方法,我在别的框架中也想借鉴一下这样的方式,但是不才,遇到了一些问题

<code>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;*/</code>

用过tp的同学都知道,$this->ajaxReturn前面并不需要加return,而我这段代码想要返回A类中的num值,必须要在A类调用B类的return_num方法前面加上return,请问TP是如何做到的,子类中调用父类中的方法获得数据并停止子类后续代码的执行?

回复内容:

这个疑惑起因于Tp中的ajaxReturn方法,我在别的框架中也想借鉴一下这样的方式,但是不才,遇到了一些问题

<code>class A {    public $num = 2;    public function return_num() {        return $this->num;    }}class B extends <a style="color:transparent">来@源gao*daima.com搞@代#码网</a><strong>搞gaodaima代码</strong>A{    public function return_A_mum() {        $this->return_num();        echo 222;    //这里不让他运行    }}$B = new B();$a = $B->return_A_mum();echo $a;/*这里输出$a是222;*/</code>

用过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的源码就知道了。

<code class="php">protected function ajaxReturn($data) {     // 返回JSON数据格式到客户端 包含状态信息     header('Content-Type:application/json; charset=utf-8');      exit(json_encode($data));}</code>

<code>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;</code>

输出2
你看看是不是你要的效果


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:子类调用父类中的方法可以阻止子类的后续程序执行吗?
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址