>  기사  >  백엔드 개발  >  하위 클래스가 상위 클래스의 메서드를 호출하여 하위 클래스에서 후속 프로그램 실행을 방지할 수 있습니까?

하위 클래스가 상위 클래스의 메서드를 호출하여 하위 클래스에서 후속 프로그램 실행을 방지할 수 있습니까?

WBOY
WBOY원래의
2016-08-04 09:20:01990검색

이 의심은 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{
    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 값을 반환하려면 다음과 같이 해야 합니다. 클래스 A에서 호출됨 클래스 B의 num 메서드 앞에는 return_num이 수행됩니다. return 하위 클래스는 상위 클래스의 메서드를 호출하여 데이터를 가져오고 다음 코드의 실행을 중지합니다. 서브클래스? TP

호출하는 메소드에는 종료 및 다이와 같은 메소드가 있기 때문에...

일부 특정 출력에는 형식 요구 사항이 있으므로 이러한 메소드에는 가장 일반적으로 사용되는 json, xml 등과 같은 내장 종료가 있는 경우가 많습니다. ones URL 점프. 점프 명령을 전송하려면 헤더 기능을 사용한 후 종료해야 합니다. 그렇지 않으면 나중에 많은 출력이 출력됩니다.

매우 독특한 프레임워크인 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>

출력2

<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>
원하는 효과인지 확인

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.