2017-03-03 5 views
-1

Ich habe diese Frage in meinem Kopf, die mich immer noch verwirrt. Ich habe eine Klasse in PHP, die Methoden hat, die Werte manipulieren, indem sie andere Methoden derselben Klasse aufrufen. Alle diese Funktionen geben einige Werte durch "return" -Anweisung zurück. Aber das Problem tritt auf, wenn ich irgendeine Anzahl von Funktionen zur Manipulation anrufe, beendet es immer das Skript durch den ersten Funktionsaufruf. Zum BeispielPHP Rückgabewert von Inner Klasse

(Sorry für Pseudo-Code)

Class H 
Method1 
$this->Method2() 
$this->Method3() 
Method2 
Returns something 
Method3 
Returns something 
End 

Wenn im method1 aus dem Skript, das im Fall ruft zwei andere Methoden, die einen Rückgabewert haben. Mein Skript endet, während es auf Method2 in Method1 ist.

+0

können Sie Beispielcode oder etwas, das wir uns ansehen können, um es besser zu erklären? – Dimi

+0

Nicht für jetzt, aber ich möchte fragen, es ist ein guter Ansatz, um Echo Stmt zu verwenden, während Sie etwas zurückgeben? Weil die Skripte enden, wenn ich method2 innerhalb von method1 aufruft, möchte ich auch method3 verwenden, nachdem method2 ausgeführt wurde. –

Antwort

0

Vor allem die Grundlagen der OOPS in PHP..especially Rückgabetyp einer Methode, Verfahren Überlastung und überwiegendes .. http://www.killerphp.com/tutorials/php-objects-page-3/ ich das man hoffen, zu lernen haben, macht Sie sich besser fühlen ... wenn meine ans doesn 't klingt gut, nicht Ihre Frage ... weiter suchen .. es ist ein kniffliger ..

+0

Danke, das ist schwierig. Ich würde es mir ansehen! –

+0

Ich hatte schon alle diese Sachen in Oops gelernt. Das bringt mich tatsächlich um! –

+0

Ich nahm eine kurze auf Ihre .. es geht wie eine Schleife..endlich, wenn Sie eine Methode anrufen diese Schleife von der ersten beginnen..so gibt es vor der ersten Methode ... füllt es Ihre Frage? – Jana

0

Das ist, weil return den Prozess tötet und zurückgibt, was Sie wollen. Sie könnten interne Eigenschaften der Klasse haben und diese abrufen. Methoden, die diese Eigenschaften festlegen, heißen setters und Methoden, die sie abrufen, heißen getters. Werfen Sie einen Blick auf dieses Beispiel Klasse:

<?php 

Class MyClass { 

    public $firstName; 
    public $lastName; 
    public $city; 

    // Setters 
    public function setFirstName($name) 
    { 
     $this->firstName = $name; 
    } 

    public function setLastName($name) 
    { 
     $this->lastName = $name; 
    } 

    public function setCity($city) 
    { 
     $this->city = $city; 
    } 

    // Getters 
    public function getFullName($name) 
    { 
     return "{$this->firstName} {$this->lastName}"; 
    } 

    public function getCity($name) 
    { 
     return $this->city; 
    } 

} 

Nun, da ich diese Eigenschaften festlegen konnte ich einfach meine Klasse instanziiert und dass Informationen greifen:

$class = new MyClass(); 

$class->setFirstName('David'); 
$class->setLastName('Parker'); 
$class->setCity('AnyTown'); 

echo $class->firstName; // David 

echo $class->lastName; // Parker 

echo $class->city; // AnyTown 

// or something like 

echo $class->getFullName(); // David Parker 

Wenn Sie einfach Echodaten wollen, kann es Sinnvoller ist es, die Klasse zu instanziieren und die Eigenschaft der Klasse zu wiederholen. Ich finde es in der Regel gut, return etwas aus einer Klasse. Sie würden besser mit echo arbeiten, wenn Sie mit diesem Klassenobjekt arbeiten.

Hoffnung, die Sinn macht.

+0

Ich kenne Getter und Setter, aber danke. Sie haben demonstriert, indem Sie eine Klasse instanziiert und dann manipuliert haben. Was wäre, wenn ich die Werte von anderen Funktionen derselben Klasse manipulieren müsste, ohne sie tatsächlich zu instanziieren. Ich hoffe du hast es? –

+0

Ich möchte es nicht Kumpel Echo, es druckt einfach auf den Browser –