✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

WordPressi klassi serialiseerimine PHP-ga

21

Kui olete harjunud töötama mudelitega (mis tahes vundamendis või raamistikus, kuid konkreetselt WordPressiga), on tõenäoline, et peate mingil hetkel mudeli eksemplari seeriasse viima.

Muidugi on PHP sisseehitatud funktsioonide abil klassi kirjutamine andmebaasi piisavalt lihtne; Siiski on oluline lisada veidi paindlikkust, eriti mis puudutab selle kättesaadavaks tegemist muudel platvormidel.

Oletame näiteks, et loote WordPressis rakendust, mille mudelis on esindatud teatud tüüpi unikaalne teave. Seejärel on mudelile juurdepääs mobiilirakenduse kaudu REST API kaudu .

Väidetavalt on üks lihtsamaid viise selle tegemiseks kasutada JSON-i. See on vorming, mis töötab erinevates keeltes ja platvormidel, mida nimetatud platvormid saavad hõlpsasti serialiseerida ja deserialiseerida ning vajadusel saata.

Ja seda on PHP-s uskumatult lihtne rakendada. Peate lihtsalt veenduma, et teie klass rakendab JsonSerializable liidest.

WordPressi klassi serialiseerimine PHP-ga

Dokumentatsiooni põhjal teeb liides järgmist.

JsonSerializable’i rakendavad objektid saavad kohandada oma JSON-i esitust, kui need on kodeeritud koodiga json_encode().

Ainus meetod, mida klass peab pakkuma, on jsonSerialize ja kuigi on tõenäoline, et soovite järjestada kõik objekti atribuudid (ja ka selle oleku alati, kui seda kutsutakse), saate rakendust vastavalt oma soovile kohandada.

Näiteks kui teil on klass ja soovite lihtsalt selle nime atribuuti rakendada, siis rakendaksite funktsiooni järgmiselt :

<?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()
      ];
  }
}

Kui soovite sellele veidi keerukamat lisada, saate teha järgmist:

<?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(),
         ],
      ];
  }
}

Ja kui soovite atribuutide serialiseerimisega tegeleda, saate massiivi koostamiseks kasutada tsüklit :

<?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;
  }
}

Igal juhul, kui klassi eksemplar edastatakse funktsioonile json_encode, kutsub see objektil esile funktsiooni jsonSerialize, et saaksite objekti esituse JSON-vormingus, nagu olete kavandanud.

See on uskumatult lihtne ja kasulik, kui tegemist on andmete kasutamisega mitmel platvormil (või isegi samal platvormil ).

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem