2017-07-25 3 views
0

ich bin neu in PHP, und ich bin immer undefinierte Variable $firstDect obwohl es definiert:definieren Variable in einer Klasse

class Deck 
{ 
    public function getdeck() 
    { 
     $firstDeck = new Deck(); 
     return $this->firstDeck; 
    } 
} 

und

<div class="panel-body"> 
    <?php foreach ($firstDeck->getDeck() as $card): ?> 
     <img class="col-md-3" src="<?php echo $card->getImage(); ?>"> 
    <?php endforeach; ?> 
</div> 
+0

Gibt es einen bestimmten Grund, warum Sie das Objekt in sich selbst erstellen? – IsThisJavascript

+1

Ich stimme zu, diese Frage als off-topic zu schließen, weil Sie mit dem Lesen des Handbuchs anfangen sollten: http://php.net/manual/en/language.oop5.basic.php –

Antwort

1
class Deck 
{ 
    /* You have to define variable something like below before 
     accessing $this->firstDeck 
    */ 
    public $firstDeck; 


    public function getdeck() 
    { 
     $this->firstDeck = new Deck(); 
     return $this->firstDeck; 
    } 
} 

Lesen Sie weiter aus Here

-1

Sie haben einen Fehler, verwenden Sie diesen:

public function getdeck() 
    { 
     $firstDeck = new Deck(); 
     return $firstDeck ->firstDeck; 
    } 

dies auf die Selbst Klasse beziehen $.

1

Verwenden folgende Klasse:

class Deck 
    { 
     public $firstDeck; 
     public function getdeck() 
     { 
      $this->firstDeck = new Deck(); 
      return $this->firstDeck; 
     } 
    } 
1

Sie haben die Variable in der Funktion selbst definiert.

public function getdeck() 
     { 
      $firstDeck = new Deck(); 
      return $this->firstDeck; 
     } 

Sie nicht $this mit Variablen deklariert innerhalb von Funktionen verwenden können, wird $this verwendet Variable auf Klassenebene deklariert zu verweisen. Sie können Ihre Funktion wie folgt umschreiben,

public function getdeck() 
     { 
      $firstDeck = new Deck(); 
      return $firstDeck; 
     } 

oder

Sie die Variable wie folgt auf Klassenebene definieren,

class Deck 
    { 
     private $firstDeck; 
     public function getdeck() 
     { 
      $this->firstDeck = new Deck(); 
      return $this->firstDeck; 
     } 
    } 
0

Das reservierte Wort $this eine Referenz auf das Objekt der ist Klasse $this->firstDeck zeigt an, dass Sie ein Klassenmitglied mit dem Namen $firstDeck haben, den Sie nicht haben.

Sie entweder erklären, es in Ihrer Klasse als Mitglied

class Deck 
{ 
    private $firstDeck; 
    public getdeck() { ... } 
} 

oder einfach

public getdeck() 
{ 
    $firstdeck = new Deck(); 
    return $firstdeck; 
} 
-1

Viele Dinge schreiben falsch sind.

Sie versuchen, eine Variable innerhalb einer Funktion definiert zu verwenden.

denke ich, was Sie versuchen zu tun:

class Deck{ 
    public function getDeck(){ 
     return array(card1, card2...); 
    } 
} 

$firstDeck = new Deck(); 

Dies lässt einige undefiniert Fragen über das, was eine Karte oder andere Sachen, die auf die Frage außerhalb des Gültigkeitsbereichs ist.

Auf der anderen Seite habe ich ein Array verwendet, um sicherzustellen, dass die Ausgabe der getDeck Methode iterierbar ist, aber ich denke, es gibt Möglichkeiten, um Ihre Klasse selbst iterierbar zu machen, müssen Sie nur in der Dokumentation nachschlagen.

+0

Feedback zu gehen mit Downvote werden immer geschätzt . – bracco23

Verwandte Themen