2017-11-10 2 views
-1

ich eine PHP-Klasse, wenn ich die Datei json_encode, i dont get Total, Teilsumme im JSON-String, wie kann ich dies möglich zu machen,Php json Objekt einige Eigenschaften fehlen

class sale{ 

public $Customer; 
public $DiscountRate; 
public $TaxRate; 
public $SaleItems; 

public function Total() 
{ 
// .... 
} 
public function Subtotal() 
{ 
// .... 
} 
} 
+1

json enccoding codiert die __properties__ der Instanz, nicht die __methods __.... erwarten Sie wirklich json_encode zu automagically den PHP-Code zu umwandeln (mit all seinen potentiellen Abhängigkeiten, Datenbankzugriff, etc.), um JavaScript-Code? –

+0

Nein, aber ich brauche den Wert von total und subtotal codiert, also wie erreiche ich das – Smith

+1

Wie John in seiner Antwort vorgeschlagen hat, [JsonSerializable] (http://php.net/manual/en/class.jsonserializable.php) und fügen Sie die Ergebnisse dieser beiden Aufrufe als zusätzliche Eigenschaften hinzu –

Antwort

4

Sie anwenden können, die JsonSerializable Schnittstelle zu Ihrer Klasse und implementieren Sie die jsonSerialize() Methode. Der Rückgabewert dieser Methode wird als Eingabe für die Funktion json_encode() verwendet.

class Sale implements JsonSerializable { 

    public $customer; 

    public function total() { 
     return 40; 
    } 

    public function jsonSerialize() { 
     return [ 
      'customer' => $this->customer, 
      'total' => $this->total() 
     ]; 
    } 
} 
+0

pls können Sie mit einem Beispiel helfen? – Smith

+0

@Smith bearbeitet, um ein Beispiel hinzuzufügen. –

Verwandte Themen