2017-01-18 5 views
-1

Ich habe eine Klasse mit einer Funktion, ruft die Funktion die Variable und aus irgendeinem Grund zeigt es leer, wenn es am Anfang festgelegt ist. (Nicht der vollständige Code durch die Art und Weise) (URL wird als Pfad in der Funktion Variable verwendet)PHP Variable wird als leer gelesen

public  $domain   = 'http://rbx-js.herokuapp.com'; 
    protected $key   = '';   

    protected function post($url, $data) 
    { 
    foreach($data as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } 
    $fields_string = rtrim($fields_string,'&'); 

    $ch = curl_init(); 

    curl_setopt($ch,CURLOPT_URL,$this->domain.$url); 
    curl_setopt($ch,CURLOPT_POST,count($data)); 
    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); 

    $result = curl_exec($ch); 
    return $result; 
    } 

Es wäre so etwas wie dies zurück: http:///getPlayers/retrieve/3e75c964ae

+0

Was ist los mit Ihren Tabs zwischen Variablenzuweisung oben und und Einrückung auf der 'Post'-Funktion? –

+0

Welche Variable ist leer? – BizzyBob

+0

Ich vermute, dass die '$ domain' -Eigenschaft an anderer Stelle überschrieben wird, zum Beispiel im Klassenkonstruktor. – arkascha

Antwort

0

Initialisieren Sie Variablen in cosntruct:

public  $domain; 
protected $key;  

protected function __construct() 
{ 
    $this->domain = 'http://rbx-js.herokuapp.com'; 
    $this->key = ''; 
} 

protected function post($url, $data) 
{ 
    foreach($data as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } 
    $fields_string = rtrim($fields_string,'&'); 

    $ch = curl_init(); 

    curl_setopt($ch,CURLOPT_URL,$this->domain.$url); 
    curl_setopt($ch,CURLOPT_POST,count($data)); 
    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); 

    $result = curl_exec($ch); 
    return $result; 
} 
+1

Warum 'init()'? Sie müssen die Funktion manuell aufrufen. Warum raten Sie nicht nur die Verwendung von '__construct()'? –

+0

Ja, ich habe die Antwort bearbeitet. Normalerweise verwende ich init, aber ich rufe es von der geerbten benutzerdefinierten Basisklasse auf. –