✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Serializzazione di classi WordPress con PHP

25

Se sei abituato a lavorare con i modelli (in qualsiasi base o framework, ma in particolare WordPress), è possibile che tu debba serializzare un’istanza del modello a un certo punto.

Certo, scrivere la classe su un database usando le funzioni integrate di PHP è abbastanza facile; tuttavia, è importante introdurre un po’ di flessibilità soprattutto per quanto riguarda il renderlo disponibile su altre piattaforme.

Ad esempio, supponiamo che tu stia creando un’applicazione su WordPress che avrà un tipo di informazione univoca rappresentata in un modello. Il modello sarà quindi accessibile tramite un’applicazione mobile tramite l’API REST.

Probabilmente, uno dei modi più semplici per farlo è usare JSON. È un formato che funziona su vari linguaggi e piattaforme, può essere facilmente serializzato e deserializzato da dette piattaforme e inviato via cavo secondo necessità.

Ed è incredibilmente facile implementarlo in PHP. Devi solo assicurarti che la tua classe implementi l’ interfaccia JsonSerializable.

Serializzazione di classi WordPress con PHP

Dalla documentazione, l’interfaccia esegue le seguenti operazioni:

Gli oggetti che implementano JsonSerializable possono personalizzare la loro rappresentazione JSON quando codificati con json_encode().

L’unico metodo che una classe deve fornire è jsonSerialize, e sebbene sia probabile che tu voglia serializzare tutte le proprietà di un oggetto (così come il suo stato ogni volta che viene chiamato), puoi personalizzare l’implementazione come preferisci.

Ad esempio, se hai una classe e vuoi semplicemente implementare la sua proprietà name, allora implementeresti la funzione in questo modo :

<?php

class Acme implements JsonSerializable 
{
  /**
   * @var string the name of the model as represented on the front-end.
   */
  protected $name;

  // More code here.

  /**
   * @return string a JSON representation of this class
   */
  public function jsonSerialize()
  {
      return [
        'name' => $this->getName()
      ];
  }
}

Se vuoi aggiungere un po ‘più di complessità, puoi farlo :

<?php

class Acme implements JsonSerializable 
{
  /**
   * @var string the name of the model as represented on the front-end.
   */
  protected $name;

  /**
   * @var array an array of features about this object.
   */
  protected $features;

  // More code here.

  /**
   * @return string a JSON representation of this class
   */
  public function jsonSerialize()
  {
      return [
        'name' => $this->getName(),
        'features' => [
          'hair' => $this->getHairColor(),
          'eyes' => $this->getEyeColor(),
         ],
      ];
  }
}

E se vuoi puntare tutto sulla serializzazione delle proprietà, puoi implementare un ciclo per costruire un array :

<?php

class Acme implements JsonSerializable 
{
  /**
   * @var string the name of the model as represented on the front-end.
   */
  protected $name;

  /**
   * @var array an array of features about this object.
   */
  protected $features;

  // More code here.

  /**
   * @return string a JSON representation of this class
   */
  public function jsonSerialize()
  {
      $objectArray = [];
      foreach ($this as $key => $value) {
          $objectArray[$key] = $value;
      }

      return $objectArray;
  }
}

In ogni caso, quando un’istanza della classe viene passata alla  funzione json_encode, invocherà la  funzione jsonSerialize sull’oggetto in modo da ottenere la rappresentazione dell’oggetto in formato JSON come hai progettato.

Questo è incredibilmente facile e utile quando si tratta di fornire l’utilizzo di dati su più piattaforme (o anche la stessa piattaforma, se è per questo).

Fonte di registrazione: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More