2017-05-31 4 views
-1
class Member 
{ 
    private $_member_id; 
    private $_first_name; 
    private $_last_name; 

    public function __construct($member_id, $first_name, $last_name) 
    { 
     $this->_member_id = $member_id; 
     $this->_first_name = $first_name; 
     $this->_last_name = $last_name; 

    } 

    public function changeFirstName($new_first_name) 
    { 
     $this->_first_name = $new_first_name; 

    } 

    public function changeLastName($new_last_name) 
    { 
     $this->_last_name = $new_last_name; 
    } 

    public function returnData() 
    { 

     return $this->_first_name; 
     return $this->_last_name; 

    } 

} 

$person1 = new Member(43, "Tom", "Jones"); 
$person1->changeFirstName("James"); 

echo $person1->returnData(); 

Schnelle Frage, ich lerne PHP-Klassen, ich versuche _first_name und _last_name separat von dieser Klasse zurückzugeben.Einen bestimmten Wert aus einer Klasse

So Echo echo $ person1-> returnData(); Gibt den Vornamen zurück, wie gebe ich den zweiten Namen zu separat zurück? echo $ person1-> returnData ("_ last_name"); so ähnlich? Aber ich weiß es falsch!

+0

Array mit Werten zurückgeben. –

+0

Verwenden Sie stattdessen einen bestimmten Getter. –

Antwort

1

Sie können auf diese Weise Werte für bestimmte Variablen zurückgeben.

public function returnData($name) 
{ 

    return $this->$name; 

} 

Um Wert jeder Variable zu erhalten, können Sie es von $person1->returnData("_last_name");

Für Vornamen,

echo $person1->returnData("_first_name"); 

Für zweiten Namen, bekommen

echo $person1->returnData("_last_name"); 
+0

Ich mag diese Methode am meisten, da sie Code reduziert, als ein Array zu machen, also danke! :-D – yetteh

2

Beliebte Ansatz wird mit Getter in der Klasse:

public function getFirstName() 
{ 
    return $this->_first_name; 
} 

public function getLastName() 
{ 
    return $this->_last_name; 
} 

Beispiel:

echo $person1->getLastName() . ' ' . $person1->getFirstName(); 

Wenn Sie mehrere Werte in einer Zeit zurückkehren möchten, dann Array verwenden:

public function returnData() 
{ 
    return [   
     'first_name' => $this->_first_name, 
     'last_name' => $this->_last_name, 
    ]; 
} 

Beispiel:

$personData = $person1->returnData(); 
echo $personData['first_name'] . ' ' . $personData['last_name']; 
+0

genau was ich dachte! '+ 1' – Akintunde007

0

Sie können dies versuchen:

public function returnData() 
{ 

    return array($this->_first_name, $this->_last_name); 

} 

// ... 

list($firstName, $lastName) = $person1->returnData(); 
echo $firstName . ' ' . $lastName; 
0

Sie nicht zwei Werte in gleichen Funktionen wie diese zurückgeben kann.

Sie müssen ein Array oder Objekt zurückgeben:

public function returnData(){ 
    return [ 
     'first_name' => $this->_first_name, 
     'last_name' => $this->_last_name 
    ]; 
} 

$first_name = $person1->returnData()['first_name']; 
0

Sie haben zwei Renditen in der returnData() Funktion:

public function returnData() 
    { 

     return $this->_first_name; 
     return $this->_last_name; 

    } 

Der zweite nicht ausgeführt wird erhalten, da die Funktion nach der frist verlässt . Bitte werfen Sie einen Blick auf Getter und Setter - Sie benötigen separate Funktionen für die separaten Eigenschaften - oder geben Sie sie als Array zurück.

0

können Sie nicht tun Sie direkt, wie Sie wollen. Weil die erste Rückkehr die Funktion verlässt.

Multiple returns from function

Ich bin sicher, es wird Ihnen helfen: Allerdings gibt es mehrere Möglichkeiten, um diese Einschränkung, infact solche Frage schon beantwortet wurde zu arbeiten.

0

Ihre Funktion returnData() stoppt nach der ersten Rückkehr. Sie sollten erstellen zwei separate Funktionen getFirstName und getLastName:

public function getFirstName() { 
    return $this->_first_name; 
} 
public function getLastName() { 
    return $this->_last_name; 
} 

Sie können auch eine Funktion mit dem Parameter erstellen und wenn Anweisungen der Wert benötigt zurückzukehren, aber ich würde es nicht empfehlen, da es ein unecessary Test wäre.

Verwandte Themen