2016-05-13 10 views
0

ich bin mit folgenden Coinbase PHP api:PHP Wert von Klasse erhalten, ohne bestehende Klasse zu modifizieren

Die Klassendatei enthält die folgende Zeile:

* An array of API endpoints 
*/ 
public $endpoints = array(
'book' => array('method' => 'GET', 'uri' => '/products/%s/book'), 
); 

public function getOrderBook($product = 'BTC-EUR') { 
//$this->validate('product', $product); 
return $this->request('book', array('id' => $product)); 
} 

In meiner Datei nenne ich es mit:

$exchange = new CoinbaseExchange();//Connect to Coinbase API 
$getOrderbook = $exchange->getOrderBook(); 
print_r($getOrderbook); 

Nichts wird zurückgegeben.

Obwohl, wenn ich die Klasse ändern von:

'book' => array('method' => 'GET', 'uri' => '/products/%s/book'), 

An:

'book' => array('method' => 'GET', 'uri' => '/products/%s/book?level=2'), 

Ich werde die in meiner Datei setzen gewünschte aus.

Wie kann ich die Klasse als 'book' => array('method' => 'GET', 'uri' => '/products/%s/book'), verlassen, wie es durch $getOrderbook = $exchange->getOrderBook(); ruft. Wo schließe ich bitte "level = 2" in die letzte Zeile ein?

Antwort

2

Als Eigenschaft $endpoints öffentlich ist, können Sie es von außerhalb der Klasse zugreifen (siehe unten):

$exchange = new CoinbaseExchange();//Connect to Coinbase API 
$exchange->endpoints = array('book' => array('method' => 'GET', 'uri' => '/products/%s/book?level=2')) 
$getOrderbook = $exchange->getOrderBook(); 
print_r($getOrderbook); 
+0

Sie ersetzen alle Endpunkte und das Aufrufen einer anderen Methode kann zu einem Fehler führen. – Justinas

+0

Ich habe gerade versucht zu zeigen, dass op '$ endpoint' außerhalb der Klasse aktualisieren kann (ich glaube nicht, dass es zu einem Fehler führen wird). aber op kann nur den uri-teil aktualisieren, wie du in deiner antwort gezeigt hast –

+0

Ich dachte, ich könnte etwas ähnliches tun wie $ $ getOrderbook = $ exchangement-> getOrderBook (['level = 2);' aber es hat nicht funktioniert – user6043723

0

Sie temporäre Änderungen an Endpunkt machen können:

$oldEndpoint= $exchange->endpoints['book']; // save previous value 
$exchange->endpoints['book']['uri'] .= '?level=2'; // make needed changes 
$exchange->getOrderBook(); 
$exchange->endpoints['book'] = $oldEndpoint; // reset to old value 
Verwandte Themen