Heim >Backend-Entwicklung >PHP-Tutorial >Kann eine Unterklasse die spätere Programmausführung in der Unterklasse verhindern, indem sie eine Methode in der übergeordneten Klasse aufruft?

Kann eine Unterklasse die spätere Programmausführung in der Unterklasse verhindern, indem sie eine Methode in der übergeordneten Klasse aufruft?

WBOY
WBOYOriginal
2016-08-04 09:20:011011Durchsuche

Dieser Zweifel wird durch die AjaxReturn-Methode in Tp verursacht. Ich möchte auch in anderen Frameworks von dieser Methode lernen, bin aber auf einige Probleme gestoßen

<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>

Schüler, die tp verwendet haben, wissen, dass es nicht nötig ist, $this->ajaxReturn vor return hinzuzufügen, und wenn mein Code den A-Wert in der num-Klasse zurückgeben möchte, muss dies der Fall sein Wird in Klasse A aufgerufen. Der return_num-Methode von Klasse B geht ein return voran. Wie wird die TP-Unterklasse aufgerufen, um Daten abzurufen und die Ausführung von nachfolgendem Code zu stoppen? die Unterklasse?

Antwortinhalt:

Dieser Zweifel wird durch die AjaxReturn-Methode in Tp verursacht. Ich möchte auch in anderen Frameworks von dieser Methode lernen, bin aber auf einige Probleme gestoßen

<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>
Schüler, die

verwendet haben, wissen, dass es nicht nötig ist, tp vor $this->ajaxReturn hinzuzufügen, und wenn mein Code den return-Wert in der A-Klasse zurückgeben möchte, muss dies der Fall sein Wird in Klasse A aufgerufen. Der num-Methode von Klasse B geht ein return_num voran. Wie wird die return-Unterklasse aufgerufen, um Daten abzurufen und die Ausführung von nachfolgendem Code zu stoppen? die Unterklasse? TP

Da die von Ihnen aufgerufene Methode über Methoden wie „exit“ und „die“ verfügt ...

Einige spezifische Ausgaben haben Formatanforderungen, daher verfügen solche Methoden häufig über integrierte Exits, wie z. B. JSON, XML usw., die am häufigsten vorkommen ones Die URL-Sprünge müssen nach Verwendung der Header-Funktion zum Senden der Sprunganweisung beendet werden, da sonst später eine große Ausgabe erzeugt wird.

Es scheint, dass Yii, ein sehr einzigartiges Framework, über zwei Methoden verfügt: $controller->redirect() und $controller->redirectAndExit(). Leute, die es nicht wissen, werden kläglich sterben, wenn sie ersteres aufrufen.
Was Sie tun, ist, JSON zurückzugeben. Wenn Sie es nicht zurückgeben, werden wahrscheinlich zusätzliche Zeichen nach dem JSON hinzugefügt, was dazu führt, dass das Datenformat illegal ist.

Sie können dieses Problem herausfinden, indem Sie sich den Quellcode von thinkphp ansehen.

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

Ausgabe 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>
Überprüfen Sie, ob es der gewünschte Effekt ist

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn