{"id":230870,"date":"2022-12-20T11:16:00","date_gmt":"2022-12-20T08:16:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230870"},"modified":"2022-12-07T10:10:39","modified_gmt":"2022-12-07T07:10:39","slug":"wordpressi-klassi-serialiseerimine-php-ga","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/wordpressi-klassi-serialiseerimine-php-ga\/","title":{"rendered":"WordPressi klassi serialiseerimine PHP-ga"},"content":{"rendered":"\n<p>Kui olete harjunud t\u00f6\u00f6tama mudelitega (mis tahes vundamendis v\u00f5i raamistikus, kuid konkreetselt WordPressiga), on t\u00f5en\u00e4oline, et peate mingil hetkel mudeli eksemplari seeriasse viima.<\/p>\n<p>Muidugi on PHP sisseehitatud funktsioonide abil klassi kirjutamine andmebaasi piisavalt lihtne; Siiski on oluline lisada veidi paindlikkust, eriti mis puudutab selle k\u00e4ttesaadavaks tegemist muudel platvormidel.<\/p>\n<p>Oletame n\u00e4iteks, et loote WordPressis rakendust, mille mudelis on esindatud teatud t\u00fc\u00fcpi unikaalne teave. Seej\u00e4rel on mudelile juurdep\u00e4\u00e4s mobiilirakenduse kaudu <a href=\"https:\/\/developer.wordpress.org\/rest-api\/#why-use-the-wordpress-rest-api\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">REST API<\/a> kaudu .<\/p>\n<p>V\u00e4idetavalt on \u00fcks lihtsamaid viise selle tegemiseks kasutada JSON-i. See on vorming, mis t\u00f6\u00f6tab erinevates keeltes ja platvormidel, mida nimetatud platvormid saavad h\u00f5lpsasti serialiseerida ja deserialiseerida ning vajadusel saata.<\/p>\n<p>Ja seda on PHP-s uskumatult lihtne rakendada. Peate lihtsalt veenduma, et teie klass rakendab <a href=\"https:\/\/secure.php.net\/manual\/en\/class.jsonserializable.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">JsonSerializable<\/a> liidest.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160816-61e71433d1015.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160816-61e71433d1015.png\" alt=\"WordPressi klassi serialiseerimine PHP-ga\" ><\/a><\/p>\n<p>Dokumentatsiooni p\u00f5hjal teeb liides j\u00e4rgmist.<\/p>\n<blockquote>\n<p>JsonSerializable&#8217;i rakendavad objektid saavad kohandada oma JSON-i esitust, kui need on kodeeritud koodiga json_encode().<\/p>\n<\/blockquote>\n<p>Ainus meetod, mida klass peab pakkuma, on <strong>jsonSerialize<\/strong> ja kuigi on t\u00f5en\u00e4oline, et soovite j\u00e4rjestada k\u00f5ik objekti atribuudid (ja ka selle oleku alati, kui seda kutsutakse), saate rakendust vastavalt oma soovile kohandada.<\/p>\n<p>N\u00e4iteks kui teil on klass ja soovite lihtsalt selle nime atribuuti rakendada, siis rakendaksite funktsiooni <a href=\"https:\/\/gist.github.com\/tommcfarlin\/e87e029f8e28ec9681996761f06d7347#file-00-name-property-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">j\u00e4rgmiselt<\/a> :<\/p>\n<pre><code>&lt;?php\n\nclass Acme implements JsonSerializable \n{\n  \/**\n   * @var string the name of the model as represented on the front-end.\n   *\/\n  protected $name;\n\n  \/\/ More code here.\n\n  \/**\n   * @return string a JSON representation of this class\n   *\/\n  public function jsonSerialize()\n  {\n      return [\n        'name' =&gt; $this-&gt;getName()\n      ];\n  }\n}<\/code><\/pre>\n<p>Kui soovite sellele veidi keerukamat lisada, saate <a href=\"https:\/\/gist.github.com\/tommcfarlin\/e87e029f8e28ec9681996761f06d7347#file-01-additional-properties-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">teha<\/a> j\u00e4rgmist:<\/p>\n<pre><code>&lt;?php\n\nclass Acme implements JsonSerializable \n{\n  \/**\n   * @var string the name of the model as represented on the front-end.\n   *\/\n  protected $name;\n\n  \/**\n   * @var array an array of features about this object.\n   *\/\n  protected $features;\n\n  \/\/ More code here.\n\n  \/**\n   * @return string a JSON representation of this class\n   *\/\n  public function jsonSerialize()\n  {\n      return [\n        'name' =&gt; $this-&gt;getName(),\n        'features' =&gt; [\n          'hair' =&gt; $this-&gt;getHairColor(),\n          'eyes' =&gt; $this-&gt;getEyeColor(),\n         ],\n      ];\n  }\n}<\/code><\/pre>\n<p>Ja kui soovite atribuutide serialiseerimisega tegeleda, saate <a href=\"https:\/\/gist.github.com\/tommcfarlin\/e87e029f8e28ec9681996761f06d7347#file-02-acme-serializable-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">massiivi<\/a> koostamiseks kasutada ts\u00fcklit :<\/p>\n<pre><code>&lt;?php\n\nclass Acme implements JsonSerializable \n{\n  \/**\n   * @var string the name of the model as represented on the front-end.\n   *\/\n  protected $name;\n\n  \/**\n   * @var array an array of features about this object.\n   *\/\n  protected $features;\n\n  \/\/ More code here.\n\n  \/**\n   * @return string a JSON representation of this class\n   *\/\n  public function jsonSerialize()\n  {\n      $objectArray = [];\n      foreach ($this as $key =&gt; $value) {\n          $objectArray[$key] = $value;\n      }\n\n      return $objectArray;\n  }\n}<\/code><\/pre>\n<p>Igal juhul, kui klassi eksemplar edastatakse funktsioonile <strong>json_encode, kutsub see objektil esile funktsiooni<\/strong> <strong>jsonSerialize<\/strong>, et saaksite objekti esituse JSON-vormingus, nagu olete kavandanud.<\/p>\n<p>See on uskumatult lihtne ja kasulik, kui tegemist on andmete kasutamisega mitmel platvormil (v\u00f5i isegi <a href=\"https:\/\/secure.php.net\/manual\/en\/function.json-decode.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">samal platvormil<\/a> ).<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>JsonSerializable liidese abil on WordPressi klassi serialiseerimise lisamine v\u00e4ga lihtne.<\/p>\n","protected":false},"author":1,"featured_media":236064,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[802],"tags":[1165],"class_list":["post-230870","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230870","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=230870"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230870\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/236064"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=230870"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=230870"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=230870"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}