✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Serialização de classe do WordPress com PHP

36

Se você está acostumado a trabalhar com modelos (em qualquer fundação ou estrutura, mas especificamente no WordPress), há uma chance de precisar serializar uma instância do modelo em algum momento.

Claro, escrever a classe em um banco de dados usando as funções internas do PHP é bastante fácil; no entanto, é importante introduzir um pouco de flexibilidade, especialmente no que se refere à disponibilização em outras plataformas.

Por exemplo, digamos que você esteja criando um aplicativo no WordPress que terá algum tipo de informação exclusiva representada em um modelo. O modelo será então acessível por meio de um aplicativo móvel por meio da API REST.

Indiscutivelmente, uma das maneiras mais fáceis de fazer isso é usar JSON. É um formato que funciona em vários idiomas e plataformas, pode ser facilmente serializado e desserializado por essas plataformas e enviado pela rede conforme necessário.

E é incrivelmente fácil implementar isso em PHP. Você só precisa garantir que sua classe implemente a interface JsonSerializable.

Serialização de classe do WordPress com PHP

A partir da documentação, a interface faz o seguinte:

Objetos que implementam JsonSerializable podem personalizar sua representação JSON quando codificados com json_encode().

O único método que uma classe precisa fornecer é jsonSerialize e, embora seja provável que você queira serializar todas as propriedades de um objeto (assim como seu estado sempre que for chamado), você pode personalizar a implementação da maneira que desejar.

Por exemplo, se você tem uma classe e quer apenas implementar sua propriedade name, então você implementaria a função assim :

<?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 você quiser adicionar um pouco mais de complexidade, faça o seguinte :

<?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 você quiser se aprofundar na serialização das propriedades, poderá implementar um loop para construir um 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;
  }
}

Seja qual for o caso, quando uma instância da classe é passada para a  função json_encode, ela invocará a  função jsonSerialize no objeto para que você obtenha a representação do objeto no formato JSON conforme projetado.

Isso é incrivelmente fácil e útil quando se trata de fornecer dados de uso em várias plataformas (ou até mesmo na mesma plataforma ).

Fonte de gravação: tommcfarlin.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação