2017-02-15 8 views
0

zugreifen Ich muss auf die globale Variable von einer anderen Funktion zugreifen. Zuerst habe ich den Wert der globalen Variable in einer Funktion zugewiesen. Wenn ich versuche, diesen Wert von einer anderen Funktion zu erhalten, gibt es immer null zurück. Hier ist mein Codeglobale Variable kann nicht innerhalb der Funktion

StockList.php

<?php 
$_current; 
class StockList 
{ 
    public function report(){ 
    global $_current; 
    $_current = 10; 
    } 

    public function getValue(){ 
    print_r($GLOBALS['_current']); 
    } 
} 
?> 

Suggestion.php

<?php 

    include ("StockList.php"); 
    $stk = new StockList(); 

    $stk->getValue(); 

?> 

Vielen Dank im Voraus.

+0

Warum muss dies eine globale Variable sein? Warum können Sie nicht einfach eine Klasseneigenschaft verwenden? –

+0

Sie können vor der Erstellung nicht auf eine globale Variable zugreifen. Versuchen Sie, Globals zu vermeiden. – Andrew

+0

Ich denke, die globale Variable sollte innerhalb der Klasse sein –

Antwort

0

Mann, seine schwer zu verstehen, was Sie versuchen, wie Sie zu tun, sagte der Report () in der index.php Auch immer genannt haben, wenn sie mit Klassen zu tun, Variablenwerte zu setzen, ist das übliche Verfahren, wie folgend:

class StockList 
{ 
    public $_current; 
    public function setValue($value){ 
    $this->current = $value; 
    } 

    public function getValue(){ 
    return $this->current; 
    } 
} 

Und nach, wenn Sie die Klasse wollen verwenden:

<?php 
    include ("StockList.php"); 
    $stk = new StockList(); 
    $stk->setValue(10); 
    $_current = $stk->getValue(); 
    var_dump($_current); 
?> 

Dies ist eine grundlegende Idee der OOP, Vorteile dieses Ansatzes sind:

  1. Sie können den Wert von $ _current dynamisch festlegen.

  2. Die Funktion getValue() ist nicht zum Drucken des Wertes der Variablen bestimmt, deshalb können Sie diese Funktion nur zum Abrufen des Werts verwenden und dann alles tun, was Sie wollen.

+0

Der report() wird in der index.php aufgerufen. Die Funktion getValue() wird in Ajax aufgerufen. – balaraman

+0

können Sie den Code für den Aufruf von report() irgendwie anzeigen? ODER stellen Sie sicher, dass Sie report() nach dem Erstellen der Klasseninstanz und vor dem Aufruf von getValue() aufgerufen haben. – Learner

+0

@balaraman Es klingt, als würden Sie erwarten, dass die Wertänderung auf den Seiten beibehalten wird. Sie sollten eine Sitzung dafür verwenden, wenn dies der Fall ist. Ansonsten müssen Sie den Wert jedes Mal einstellen – Machavity

Verwandte Themen