✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Tietokantakyselyt tietojen nopeaan päivittämiseen, osa 2

5

Tämä on toinen ja viimeinen osa sarjasta, joka käsittelee suoria tietokantakyselyitä, kuten otsikko kertoo. Tarkemmin sanottuna kyse on viestien tilan muuttamisesta (mutta sillä on merkitystä muuhunkin).

Kuva Ross Findon Unsplashista

Edellisestä postauksesta:

Tämä on jälleen yksi viesti, joka havainnollistaa kuinka käyttää $wpdb:tä tietojen nopeaan päivittämiseen metatietoihin perustuen.

Ja tuossa viestissä annettu koodi toimii, mutta jos haluat tehdä siitä oliokeskeisemmän, työtä voidaan tehdä enemmän.

Ennen kuin siirryt varsinaiseen viestiin, on kuitenkin tärkeää huomata, että olio-ohjelmoinnin osalta luokan suunnitteluun ja abstraktiotasojen luomiseen voi mennä paljon työtä.

Jossain vaiheessa sinun on vedettävä sananmukainen raja sen välille, milloin aiot käyttää rajapintoja, kuinka tarkkoja luokkasi tulevat olemaan sen suhteen, mitä ne abstraktoivat, ja vastaavat.

Ja tämän postauksen tarkoituksena on auttaa tarjoamaan parempi oliopohjainen suunnittelu, mutta se ei ole harjoitus, joka tekee siitä mahdollisimman optimaalisen. Keskustelen tällaisista aiheista toisessa viestisarjassa.

Mutta pidä tämä mielessä, kun luet koodia läpi koko viestin.

Tietokantakyselyt tietojen nopeaan päivittämiseen, osa 2

Kun otetaan huomioon, mihin jäimme, meillä on yksi toiminto, joka suorittaa seuraavat asiat:

  1. hakea kaikki viestit, jotka liittyvät tiettyyn metaavaimeen,
  2. päättää, onko meidän poistuttava aikaisin,
  3. päivittää olemassa olevien viestien tilan.

Ensimmäinen huomioitava asia on, että yksi toiminto on liikaa, joten se on jaettava useisiin muihin toimintoihin. Ja koska se on oliokeskeinen, meidän on varmistettava, että mitä tahansa toiminto tekee, ei välttämättä edellytetä aiempia vaiheita – juuri siitä on kyse prosessiohjelmoinnista.

Sen sijaan käytämme tätä tilaisuutta toimintojen määrittämiseen, jotta ne käyttävät mitä tahansa niille välitettyä dataa riippumatta siitä, miten he pääsivät sinne.

Lopuksi sinun on kehittäjänä päätettävä, haluatko käyttää tätä varten yhtä luokkaa, useampaa kuin yhtä luokkaa vai joukon toisiinsa liittyviä luokkia, jotka perivät pääluokalta.

Jälleen kyse on siitä, kuinka abstraktin haluat tehdä koodista.

Toistaiseksi mennään kuitenkin asioiden purkamisessa.

1 Tartu viestitunnukseen liittyvällä metaavaimella

Aivan kuten ensimmäisessä viestissä, haluamme varmistaa, että haemme viestitunnuksia, jotka liittyvät tiettyyn metaavaimeen.

Jotta tästä toiminnosta olisi mahdollisimman joustava, asetamme sen seuraavasti:

  • hyväksy meta-avain merkkijonoksi,
  • palauttaa taulukon

Funktio näyttää sitten suunnilleen tältä:

Ensimmäisessä viestissä jaoimme tämän kolmeen vaiheeseen (jotka on myös kuvattu edellä). Tässä voimme kuitenkin yhdistää toisen ja kolmannen vaiheen yhdeksi funktioksi.

2 Päivitä viestin tila

Kuten mainitsin, olio-ohjelmoinnin yksi näkökohta on varmistaa, että käyttämämme toiminnot ovat agnostisia sen suhteen, kuinka ne vastaanottavat tiedot luotiin.

Sen sijaan niillä on suoritettava yksi algoritmi keskittyäkseen funktioon siirrettyihin tietoihin. Tässä tapauksessa haluamme ottaa tulosjoukon – jotka ovat viestitunnuksia – ja päivittää niiden viestien tilan niin, että se on luonnos.

Tämä tarkoittaa, että funktio hyväksyy taulukon, mutta ei palauta mitään. Mahdollisesti voisit antaa sen seurata monia päivitettyjä viestejä (tai päivittääkö se mitään), mutta keskityn vain muokkaamaan jo olemassa olevaa koodia uudelleen.

Joten sitä aiomme tehdä. Ja ensimmäinen asia on varmistaa, että käytettävissä on todellista dataa, jonka kanssa voit työskennellä. Ja jos on, toista viestitunnusten luettelo ja muuta niiden viestien tilaa:

Voit nähdä, että se ei juurikaan eroa ensimmäisessä viestissä tehdystä työstä, mutta nyt se herättää muutaman kysymyksen.

3 Oliolähtöisiä huomioita

Kun työskentelet seuraavanlaisen koodin kanssa:

  • Kuuluuko se kaikki samaan luokkaan vai eri luokkiin?
  • Pitäisikö perusluokka olla ja jos on, miksi tai miksi ei?
  • Pitäisikö olla yksi julkinen toiminto, joka kutsuu näitä menetelmiä (ja merkitä ne yksityisiksi)?
  • Pitäisikö meidän jättää toiminnot julkisiksi?

Tätä postausta varten aion tehdä seuraavaa:

  • Näytä jokainen funktio julkisena menetelmänä. Tämä johtuu siitä, että jos ensimmäisestä menetelmästä palautetaan tietoja, voit mahdollisesti tehdä sillä jotain muuta.
  • Pidä se yhden luokan sisällä. Tällä tavalla voimme instantoida yksittäisen luokan ja käyttää sitä minkä tahansa työn tekemiseen. Jos olisi muita menetelmiä, käyttäisimme samoja menetelmiä.
  • Aloita käyttöliittymästä. En aio vaivautua kirjoittamaan käyttöliittymää vain näyttääkseni käyttöliittymän (oletan, että se on tarpeeksi helppo päätellä nykyisten funktioiden perusteella), mutta aion käydä kurssilla ja näyttää, kuinka voimme kutsua toimii "ulkopuolelta sisään".

Joten aloitan viimeisestä kohdasta ja työskentelen taaksepäin. Tässä on yksi tapa käyttää koodia:

Ja sitten tältä koko luokka näyttää:

Yleisesti ottaen se palvelee samoja tarkoituksia kuin ensimmäinen, mutta oliokeskeisemmällä tavalla.

Se ei ole tapa

Kuten olen yrittänyt toistaa useita kertoja tämän viestin kautta, tämä ei ole lopullinen tapa tehdä tätä työtä. Sen sijaan se on yksi tapa tehdä työtä.

Voit suunnitella, muuttaa tai käyttää tätä uudelleen haluamallasi tavalla. Tarkoituksena on kuitenkin näyttää, kuinka irrottaa logiikka, jonka yleensä näemme proseduurina, johonkin, joka on hieman vähemmän riippuvainen itsestään ja jättää tilaa lisätyölle.

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja