PHP-dataobjektien käyttö

  • Tarvittava tieto: Jotkut PHP- ja SQL-tiedot ovat hyödyllisiä
  • Edellyttää: Web-palvelin (kuten Apache), johon on ladattu PHP, ja relaatiotietokantojen hallintajärjestelmä, joka pystyy muodostamaan suojatun alkuperänimityksen (kuten MySQL); ODBC ja Oppi 2 ovat valinnaisia ​​lisäominaisuuksia
  • Projektin aika : 1-3 tuntia (tai enemmän, riippuen serendipitous oppimispolku ja kapasiteetti)
  • Lähdetiedosto

Tämä artikkeli ilmestyi ensimmäisen kerran numero 231 .net-lehden.

Dynaaminen verkkosivustojen ja sovellusten kehitys näyttää nykyään tavallisemmalta kuin staattiselta verkkosivustojen luomiselta, ja dynaamisen kehityksen myötä syntyy tarve tallentaa tietoja.

Suosittu PHP-kielen rinnalla käytetty tietokannan hallintajärjestelmä on MySQL-tietokanta, ja myös Microsoft SQL, PostgreSQL ja Oracle ovat melko yleisiä. PHP-kehittäjäryhmä helpotti aluksi yhteyden muodostamista PHP: n ja tietokantajärjestelmien välillä käyttämällä tietokantajärjestelmäkohtaisia ​​toimintoja, kuten:



MySQL: resurssi mysql_query (merkkijono $ kysely [, resurssi $ link_identifier])
Microsoft SQL: sekoitettu mssql_query (merkkijono $ kysely [, resurssi $ link_identifier [,
int $ batch_size = 0]])
PostgreSQL: resurssi pg_query ([resurssi $ yhteys], merkkijono $ kysely)
Oracle-tietokanta: bool oci_execute (resurssi $ lause [, int $ mode = OCI_
COMMIT_ON_SUCCESS])

Apple iPad Mini 2 musta perjantai

Kuten määritelmistä näet, niillä ei ole vakiolomaketta, joten jos joudut vaihtamaan tietokantajärjestelmän Oraclesta MySQL: ksi, sinun on käsiteltävä koodisi läpi ja muutettava tapaa, jolla muodostat yhteyden tietokantaan. Se on myös piikki tietokantayhteyksien oppimisessa PHP: ssä: et voi vain siirtää tietosi esimerkiksi PostgreSQL: stä Microsoft SQL: ään.

01. PHP Data Object (PDO) -filosofia

Onneksi PHP: ssä on tietokantayhteyksien pelastaja - ja tämä on kolmen kirjaimen lyhenne PDO, joka tarkoittaa PHP Data Objects. SAN-kirjaston idea on, että se tarjoaa standardoidun perustan, jonka avulla voit muodostaa yhteyden mihin tahansa relaatiotietokantojen hallintajärjestelmään (RDBMS), josta voidaan kysyä SQL: n avulla.



Hyvällä onnella SAN-luontikoodisi tulisi luoda tietokantaan yllä olevan kaltainen taulukko

Hyvällä onnella SAN-luontikoodisi tulisi luoda tietokantaan yllä olevan kaltainen taulukko

Kirjoitushetkellä tämä sisältää CUBRID, Firebird, Interbase, IBM DB2, Informix, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, SQLite, 4D - ja minkä tahansa tietokannan, joka on yhdistettävissä ODBC: n kautta.

Ottaen nopean käsitteellisen esimerkin muutoksista, olisimme aiemmin nähneet:

_kysely ($ neliömetriä);



Näemme nyt standardoidun toimintojoukon, joka näyttää hieman tältä:

$ conn-> kysely ($ sql);

Mutta se on nyt tarpeeksi teoria - katsotaanpa tätä voimakasta kirjastoa toiminnassa! SAN: lla on kaksi erillistä näkökohtaa, joista ensimmäinen on yhteys - mikä on selvästi vaadittu elementti - kun taas toinen puoli on kyselyelementti.

02. Yhdistäminen tietokannan hallintajärjestelmään

Ennen kuin tiedustelemme tietoja, meidän on muodostettava yhteys jo asennettuun ja määritettyyn tietokannan hallintajärjestelmään. Ensimmäisen esimerkin muodostamme yhteyden MySQL-tietokantaan, joka toimii localhostilla:

SAN ('mysql: host = paikallinen isäntä; dbname = sinun nimesi', 'käyttäjänimi', 'salasana');

Verrataan sitä yhteyden muodostamiseen PostgreSQL-tietokantaan:

w SAN ('pgsql: host = paikallinen isäntä; dbname = sinun nimesi', 'käyttäjänimi', 'salasana');

Yhteydet on standardoitu ensimmäisen esimerkin ansiosta, joka käyttää samaa toimintoa, kun taas toisessa käytetään standardoitua tietolähteen nimi (DSN) -järjestelmää. Voit alkaa nähdä, kuinka helppoa se on, jos haluat vain siirtyä tietokannan hallintajärjestelmästä toiseen.

Drupal 7: llä on SAN sen tietokannan abstraktiokerrosten takana. Drupalin virallinen dokumentaatio näistä on hieno tapa saada lisätietoja integraatiosta

Drupal 7: llä on SAN sen tietokannan abstraktiokerrosten takana. Drupalin virallinen dokumentaatio näistä on hieno tapa saada lisätietoja integraatiosta

03. Kysely ja tulosten lukeminen

Tietojen kysely on aluksi mielenkiintoisempaa kuin tietojen luominen, ja koska tämä on opetusohjelma tiedonsiirtoyhteydestä eikä SQL: stä, pääsemme suoraan kyselyihin ja käymme myöhemmin luomisessa, lisäyksessä, päivittämisessä ja poistamisessa.

Oletamme, että meillä on taulukko nimeltä profiili , jossa luetellaan erilaisia ​​tietoja hypoteettisen verkkosovelluksen käyttäjistä. Suoritetaan esimerkkinä nopea profiilihaku SQL: ssä suojatun alkuperänimityksen kautta ja kaikuen sitten yksinkertaisesti täydelliset nimet. Huomaa, kuinka kyselytoimintoa voidaan käyttää iteraattorina - toiminto, joka tallentaa osoittimen muistiin matriisin nykyiselle elementille (tai tässä tapauksessa tulosjoukolle). Kun tämä yhdistetään a jokaiselle silmukka se mahdollistaa nopean ja helpon tavan käyttää rivejä:

$ conn = new $ conn = new $ conn = new $ conn = neforeach ($ conn-> kysely ('SELECT * FROM-profiili') kuten $ -rivi) kaiku
$ row ['koko nimi'];

Tietenkin tämä on nopeaa ja helppoa, mutta tuskin koskaan haluamme hakea kaikkia rivejä; Siksi lisätkäämme joitain ehdollisia vaihtelevan injektion avulla. Tässä käytämme vankempaa kyselymenetelmää, joka valmistelee kyselyn ja pistää muuttujat:

$ query = $ conn-> Prepar ('SELECT * FROM profiili WHERE käyttäjänimi =
: käyttäjänimi LIMIT 1 ');
$ query-> bindParam (': käyttäjänimi', 'knightofarcadia');
$ kysely-> suorita ();
$ profiili = $ kysely> hae (SAN :: FETCH_ASSOC);
echo $ profile ['koko nimi'];

Yllä oleva koodi rajoittaa profiilitaulukon haun vain yhteen profiiliin, jolla on käyttäjänimi ritariofarcadia . Ensimmäisen esimerkkimme tapaan se tulostaa yksinkertaisesti koko nimen sen jälkeen - mutta voit varmasti kuvitella rakentavan kokonaisen XHTML-sivun, jolla tiedot on siirretty heille.

PHP Data Objects -kirjasto auttaa Facebookin HipHop-moottoria, joka voi vähentää CPU-käyttöä verkkopalvelimissaan jopa 50 prosenttia

PHP Data Objects -kirjasto auttaa Facebookin HipHop-moottoria, joka voi vähentää CPU-käyttöä verkkopalvelimissaan jopa 50 prosenttia

Meillä voi kuitenkin olla useampi kuin yksi rivi palautettu kyselyssä, ja siksi meillä on kyky käyttää hae menetelmä iteraattorina. Täällä näemme toisen kyselyn, joka palauttaa monirivisen tulosjoukon:

$ query = $ conn-> prepar ('SELECT * FROM profile WHERE kotikaupunki =: kotikaupunki');
$ query-> bindParam (': kotikaupunki', 'Wessex');
$ kysely-> suorita ();
foreach ($ kysely-> hae (SAN :: FETCH_ASSOC) kuten $ -rivi) {
echo $ row ['koko nimi'];
}

kuinka löytää tyylisi taiteesta

Yllä oleva esimerkki etsii profiilitietokannasta ja palauttaa kaikki profiilit, joilla on kotikaupunki asetettu Wessex . hae menetelmää käytetään sitten kaikkien näiden tulosten palauttamiseen, ja suoraviivaiseksi esimerkkinä voimme vain tulostaa koko nimen ruudulle - vaikka tämä voisi olla monimutkaisempi XHTML-sivutoiminto.

04. Luominen

Vaikka suosittelisin, että tietokantarakenne luodaan SQL: ssä suoraan tietokannan hallintajärjestelmään, on mahdollista luoda dynaamisesti tietokantataulukoita käyttämällä SAN: n valmistamaa SQL: ää:

$ createql = $ conn-> Prepar ('Luo taulukko -profiilit (käyttäjänimi VARCHAR (64), koko nimi VARCHAR (128), kotikaupunki VARCHAR (128)'));
$ conn-> kysely ($ createql);

Muista, että kysely objekti tässä tapauksessa ei palauta mitään arvokasta, koska se on luomiskomento. Kuten jo mainittiin, on syytä yrittää välttää dynaamisen taulukoiden luomisen käyttöä tällä tavalla verkkosovelluksessa, vaikka voin kuvitella, että sitä käytetään 'kerran suoritetuissa' verkkopohjaisissa järjestelmissä (kuten palvelimen verkkosovellusten asentajat), kuten sekä yksinkertaisissa ei-verkkopohjaisissa palvelinkomentosarjoissa.

Tässä on objektimalli, joka vastaa tässä opetusohjelmassa käytettyä esimerkinomaista PHP-koodia

Tässä on objektimalli, joka vastaa tässä opetusohjelmassa käytettyä esimerkinomaista PHP-koodia

05. Lisäys

Tietojen lisääminen on erittäin tärkeää dynaamisessa järjestelmässä ja erityisesti nykyaikaisissa Web 2.0- ja Web 3.0 -järjestelmissä, jotka ovat suuntautuneet yhteistyöhön - miten käyttäjät voivat tehdä yhteistyötä, elleivät he pysty kykenemään tallentamaan ja jakamaan tietoja? Siksi lisätään joitain tietoja profiilitaulukkoomme seuraavasti:

$ insertsql = 'INSERT INTO profiilit (käyttäjänimi, koko nimi, kotikaupunki) ARVOT (: käyttäjänimi,: koko nimi,: kotikaupunki)';
$ query = $ conn-> valmistele ($ insertsql);
$ query-> bindParam (': käyttäjänimi', 'knightofarcadia');
$ query-> bindParam (': koko nimi', 'Arthur Pendragon');
$ query-> bindParam (': kotikaupunki', 'Wessex');
$ kysely-> suorita ();

Kuin kysely funktio taulukoiden luomisessa, tämä suorittaa funktio ei palauta mitään arvokasta, koska se on yksinkertaisesti lisäyskomento tietokantaan. Huomaa myös, että käytämme 'valmistelu, sidonta ja toteutus' -tekniikkaa injektoidaksemme muuttujamme SQL: ään.

06. Päivittäminen

Päivittäminen, kuten lisääminen ja poistaminen, on ratkaisevan tärkeää yhteistyöjärjestelmässä, ja SAN tekee siitä helppoa. Päivittäminen on melko samanlainen kuin lisäys:

$ query = $ conn-> Prepar ('PÄIVITÄ profiileja SET fullname =: koko nimi WHERE
käyttäjänimi =: käyttäjänimi ');
$ query-> bindParam (': koko nimi', 'Arthur Pendragoon');
$ query-> bindParam (': käyttäjänimi', 'knightofarcadia');
$ kysely-> suorita ();

Yllä oleva koodilohko vain korvaa käyttäjän koko nimen, mutta huomaat, että se on käytännöllisesti katsoen identtinen lisäyskoodin kanssa. Sitomme ehdollisen tuloksen, tässä tapauksessa käyttäjänimen, ja asetustuloksen, tässä esimerkissä uuden koko nimen.

Yksinkertainen relaatiotietokantamalli normalisoidusta monista moniin -suhteeseen - suunnilleen sellainen rakenne, jonka Oppi rakentaa ORM-määritelmästä

Yksinkertainen relaatiotietokantamalli normalisoidusta monista moniin -suhteeseen - suunnilleen sellainen rakenne, jonka Oppi rakentaa ORM-määritelmästä

07. Poisto

Katsotaan lopuksi nopea poistaminen, joka on usein yksinkertaisempi prosessi kuin lisääminen tai päivittäminen.

dikembe mutombon 41 Ѓ 2 viikkoa pelastaa maailma

$ query = $ conn-> Prepar ('POISTA profiileista WHERE' käyttäjänimi '=
: käyttäjänimi);
$ query-> bindParam (': käyttäjänimi', 'knightofarcadia');
$ kysely-> suorita ();

Yllä oleva SQL yksinkertaisesti poistaa profiilin, jossa vastaamme käyttäjänimeä. Yhdistämme käyttäjänimen ehdolliseen muuttujaan.

08. Tietokannan hallintajärjestelmän vaihtaminen

Nyt kun tietokantataulukon rakenne on identtinen ja että emme käytä mitään standardoimattomaa SQL-järjestelmässä, voimme yksinkertaisesti muuttaa tietolähteen nimen osoittamaan yhdestä RDBMS: stä - alkuperäisessä esimerkissämme Microsoft SQL Server - toiseen (esimerkiksi IBM DB2). Koko koodi, jonka olemme tehneet siitä lähtien, toimii - tarvitsematta muuttaa mitään SQL: ää.

Aloitamme siitä, että yhteysmerkkijonomme näyttää tältä:

$ conn = uusi SAN ('sqlsrv: palvelin = paikallinen isäntä; tietokanta = sinun nimesi',
'käyttäjänimi',
'Salasana');
$ conn = uusi SAN ('ibm: DRIVER = {IBM DB2 ODBC DRIVER}; DATABASE = sinun
bname; HOSTNAME = localhost; PORT = 56789; PROTOCOL = TCPIP; ',' käyttäjänimi ',
'Salasana');

Toinen suojatun alkuperänimityksen kirjaston avainkäyttäjistä on MediaWiki, sovellus, joka tukee kaikkia Wikipedia Foundationin projekteja

Toinen suojatun alkuperänimityksen kirjaston avainkäyttäjistä on MediaWiki, sovellus, joka tukee kaikkia Wikipedia Foundationin projekteja

09. Tapahtumat

Tapahtuma on tietokannan termi, johon tallennat kyselyjoukon eräkäsittelyä varten myöhemmin. SAN tarjoaa mekanismin tapahtumien luomiseen - mutta koska ne ovat hyvin riippuvaisia ​​tietokannan hallintajärjestelmästä, SAN-tapahtumat toimivat vain, kun muodostetaan yhteys RDBMS: n alaryhmään, jota SAN tukee. Jos yrität aloittaa tapahtuman RDBMS: llä, joka ei tue tapahtumia, saat melko ikävän SAN-tapahtuman. Joten analysoimme joitain tapahtumakoodeja:

yrittää {
$ conn-> beginTransaction ();
$ insertsql = $ conn-> Prepar ('INSERT INTO profiilit (käyttäjänimi, koko nimi,
kotikaupunki) ARVOT ('wilfred', 'Wilfred Jones', 'Scarborough') ');
$ deletesql = $ conn-> Prepar ('POISTA profiileista WHERE käyttäjänimi =
'käyttäjänimi' ');
$ conn-> exec ($ insertsql);
$ conn-> exec ($ deletesql);
$ conn-> sitoa ();
} saalis (poikkeus $ e) {
$ conn-> rollBack ();
// viesti, johon pääsee: $ e-> getMessage ();
}

Ensinnäkin aloitamme kokeilunsieppauksen, jotta voimme havaita kaikki huonot poikkeukset, mukaan lukien ne, jotka saatat kokea yrittäessäsi muodostaa yhteyden RDBMS: ään, jolla ei ole tapahtumatuet. Aloitamme liiketoimen $ conn-> beginTransaction () ennen kyselyn suoritusten rakentamista, mutta ne suoritetaan kokonaan tietokannassa vasta $ conn-> sitoutuminen () toiminto suoritetaan, ja ne tehdään tehokkaassa sarjasekvenssissä - eli voit tehdä useita muita PHP-prosesseja komentojen välillä ilman vaikutusta tietokantaan.

Jos havaitsemme, että tietokanta ei tue tapahtumia, tapahtumaa ei yksinkertaisesti tapahdu; jos jokin muu poikkeus heitetään, suoritamme $ conn-> palautus () , joka palauttaa kaikki tapahtuman tekemät muutokset. On syytä huomata, että kun yhdistetään tapahtumien tukemaan RDBMS: ään, SAN siirtyy automaattisen sitoutumisen tilaan, jossa kukin exec-komento on itse oma sitoutunut tapahtuma; kuitenkin, jos haluat työskennellä turvallisella tavalla, voit aina käyttää beginTransaction ja heillä on pääsy eräsijoitukseen ja palautustoimintoihin.

10. SAN-ongelmat

PHP: n näkökulmasta ei ole todellisia ongelmia suojatun alkuperänimityksen käytössä. Se on olio-orientoitu eli laajennettava ja joustava, ja se toimii monien järjestelmien kanssa liitettävällä tavalla. Ongelma tulee, kun katsomme, että vaikka suurin osa relaatiotietokantojen hallintajärjestelmistä noudattaa SQL-standardointia (mikä auttaa meitä siirtymään järjestelmästä toiseen), monilla järjestelmillä on oma syntaksi ja toiminnot, jotka eivät ole yleisiä muita järjestelmiä.

Siksi on erittäin tärkeää, että sujuva siirtyminen järjestelmästä toiseen noudatat SQL-standardeja ja käytät vain yleisesti löydettyjä toimintoja. Esimerkkinä tästä on kyselyissä yleisesti käytetty toiminto: voimme tarkastella satunnaistamisen funktiota SQL: ssä. Tässä ovat toimintojen tekniset tiedot eri kielille:

MySQL: SELECT RAND ([siemen]);
MS SQL: SELECT RAND ([siemen]);
PostgreSQL: SELECT RANDOM (); (siementen asettamiseksi sinun on suoritettava SETSEED ([siemen])
etukäteen)
Oracle DB: SELECT dbms_random.random FROM dual;
SQLite: VALITSE RANDOM ();

Joten meidän on pidettävä tämä mielessä ja selvitettävä, voimmeko joko käyttää standardoitua SQL-tekniikkaa patentoidun toiminnon sijaan, tai käyttää PHP-menettelyä ja pistää tulos SQL-kyselyyn (satunnaistamisesimerkissä voimme käyttää rivi() PHP: n tarjoama toiminto).

Gedit-sovellus Linuxissa on yksi nopeimmista tavoista muokata koodia, ja siinä on syntaksikorostuksia monille kielille. Se käyttää Oppi ORM -järjestelmää

Gedit-sovellus Linuxissa on yksi nopeimmista tavoista muokata koodia, ja siinä on syntaksikorostuksia monille kielille. Se käyttää Oppi ORM -järjestelmää

11. Kohteiden relaatiokartoitus esimerkin avulla

Tietysti voimme mennä pidemmälle abstraktiossa siirtymällä mallinnusmaailmaan - ei, ei näyttämällä projektia catwalkilla, vaan kartoittamalla Plain Old PHP -objektit tietokantataulukoihin. PHP-kohteilla on olio-malli, kun taas SQL-tietokannoissa on relaatiomalli. Tällöin esineiden relaatiokartoitus (ORM) tulee esiin: sen avulla voit kartoittaa esineitä taulukoihin käyttämällä usein vähän taikaa ja jotain kimallusta.

Kysyt todennäköisesti, mikä on ORM: n etu. Yksinkertaisesti, sinun ei tarvitse käsitellä mitään tietokantayhteyttä tai SQL-kyselyä; käytät yksinkertaisesti PHP-objekteja ja niiden menetelmiä suoraan, ja ORM-järjestelmä käsittelee kaikkea liitettävyyttä ja taustalla olevia luonti-, luku-, päivitys- ja poistotapahtumia. PHP: lle on melko paljon ORM-kirjastoja, PdoMap , Työnnä ja Punainen papu olla muutamia hyvistä, mutta paras mitä olen käyttänyt on Oppi 2 - sillä on etu, että sitä voidaan käyttää joko yksinään tai osana MVC-asetuksia, kuten Symfony, CodeIgniter tai Zend.

Opilla 2 ja muutamissa muissa ORM-järjestelmissä määrität yleensä joukon objekteja ja sellaisia ​​suhteita, joita niillä on keskenään (kuten yksi moniin; moni yhteen; monet moniin) , jossa on yksityiskohtia ominaisuuksien ja menetelmien välisestä yhteydestä. Tietysti ei tarvitse määritellä normalisoituja linkkitaulukoita, koska niillä ei ole merkitystä objektimallissa. Tämä ihmisen suorittama prosessi tehdään yleensä käyttämällä mukautettua syntaksia, esimerkiksi XML: ssä tai YAML: ssä, ja Oppi 2 sallii objektien relaatiomääritelmät PHP: n doc-lohkoissa. Seuraava malli ja koodi kuvaa todellista esimerkkiä.

käytä Doctrine Common Collections ArrayCollection;
/ ** Jäsenen kuvaus
* @Entity
* /
luokan jäsen {
/ **
* @Id @GeneratedValue
* @Column (tyyppi = 'kokonaisluku')
* @ei ollut
* /
suojattu $ id;
/ ** @Column (type = 'merkkijono')
* @var merkkijono
* /
suojattu $ etunimi;
/ ** @Column (type = 'merkkijono')
* @var merkkijono
* /
suojattu $ sukunimi;
/ ** @Column (type = 'merkkijono')
* @var merkkijono
* /
suojattu $ sähköposti;
/ ** Monilla jäsenillä on jäsenyys monissa ryhmissä
* @ManyToMany (targetEntity = 'Ryhmä')
* @var-ryhmä []
** /
suojatut $ ryhmät;
/ **
* Rakentaja
* /
julkinen toiminto __construct () {
$ this-> ryhmät = uusi ArrayCollection ();
// ...
}
// --- Getter- ja setteri-esimerkkejä --- //
/ ** Hakee jäsenen (sisäisen) tunnuksen
* @return int
* /
julkinen toiminto getId () {
palauta $ this-> id;
}
/ ** Hakee jäsenen etunimen
* @return-merkkijono
* /
julkinen toiminto getFirstname () {
palauta $ this-> etunimi;
}
/ ** Asettaa jäsenen etunimen
* @param merkkijono $ etunimi
* /
julkinen toiminto setFirstname ($ etunimi) {
$ tämä-> etunimi = $ etunimi;
}
// --- monimutkaisempia getter- ja setteriesimerkkejä --- //
/ ** Noutaa ryhmän ryhmät
* @return Group []
* /
julkinen toiminto getGroups () {
palauta $ this-> ryhmät;
}
/ ** Määrittää ryhmän jäsenelle
* @param Group $ ryhmä
* /
julkinen toiminto assignToGroup (ryhmä $ ryhmä) {
$ this-> ryhmät [] = $ ryhmä;
}
/ ** Poistaa jäsenen ryhmästä
* @param Group $ ryhmä
* /
julkinen toiminto removeFromGroups (Group $ group) {
$ this-> getGroups () -> removeElement ($ group);
}
// ...
}
?>

Koneella suoritettu prosessi voi sitten luoda SQL: n tietokannan luomiseksi (tämä voi olla useissa SQL-syntakseissa, kuten MySQL, SQL Server tai PostgreSQL); se voi tehdä tämän purkamalla SQL: n tai muodostamalla yhteyden tietokantaan ja suorittamalla sen itse. Se luo itse monta-monelle-linkkitaulukot.

oppi orm: schema-tool: create

tai

oppi orm: schema-tool: create --dump-sql

Löydät, että olet nyt saanut PHP-objektit ja taulukot paikoilleen. Nyt voit käsitellä objekteja tarvitsematta tietää joko yhteyden muodostamista tietokannan hallintajärjestelmään tai relaatiotaulukoiden rakennetta.

$ group = uusi ryhmä ();
// aseta ryhmän tiedot, jatka ja huuhtele (kuten alla)
$ jäsen = uusi jäsen ();
$ jäsen-> setFirstname ('');
$ jäsen-> setSurname ('');
$ jäsen-> setEmail ('');
$ jäsen-> assignToGroup ($ -ryhmä);
$ entitManager-> jatkuvat ($ jäsen);
$ entitManager-> huuhtele ();
echo 'Created Member with ID'. $ jäsen-> getId (). ' n';

Tietysti siinä on hieman enemmän kuin yllä olevat koodiesimerkit, ensisijaisesti yhteyden yksityiskohdista ja käynnistyspainikkeista, mutta ajattelin, että minun pitäisi antaa sinulle maku ORM: n ja erityisesti opin voimasta. Haluan lisätä, että oppi 2 ja muutama muu PHP ORM -kirjasto käyttävät suojattua alkuperänimitystä saadakseen tukea erilaisille RDBMS-tiedostoille.

paras hiiri logic pro x: lle

Hyödyllisesti, Oppi-järjestelmä sisältää laajan sisäänrakennetun avun aina, kun tarvitset sitä

Hyödyllisesti, Oppi-järjestelmä sisältää laajan sisäänrakennetun avun aina, kun tarvitset sitä

12. Päätelmä

Olen käyttänyt suojattua alkuperänimitystä kaupallisissa hankkeissa, ja omasta kokemuksestani se lisää huomattavasti helppoutta muodostaa yhteys tietokantaan - ja käsitellä tietoja jälkikäteen - sen objektorientoinnin ansiosta. SAN: ta ei tarvitse käyttää vain järjestelmän vaihtokyvyn vuoksi; toiminnot ovat käytettävissäsi, niillä on hyvä tehokkuus ja ne ovat ihanteellisia nykyaikaisille ohjelmointisuunnittelumalleille.

Siellä on monia järjestelmiä, jotka edelleen käyttävät menettelytyyliin perustuvia järjestelmäkohtaisia ​​toimintoja, mutta olen varmasti nähnyt painopisteen siirtymisen suojattuun alkuperänimitykseen. Voimme nähdä myös suojatun alkuperänimityksen toiminnassa luonnossa, koska Drupal, MediaWiki, WordPress ja monet muut suositut avoimen lähdekoodin verkkosovellukset tukevat nyt kokonaan tai osittain SAN-järjestelmää yhteydenpitoon tietokantoihin. Minulla on visio, jossa tietoja ei enää ole tiiviisti kytketty tietokantoihin, eikä tietokantoja ole enää tiiviisti kytketty koodiin, ja näemme yleisempiä järjestelmiä konfiguroidun tiettyihin sovelluksiin. Luulen, että ORM-järjestelmät, NoSQL ja linkitetyt tiedot ovat kolme asiaa, joihin kannattaa kiinnittää huomiota nyt ja tulevaisuudessa. Tulevien verkkosovellusten tappajaominaisuuksilla on ensinnäkin tietojen yhteyksien perusta ja toiseksi näiden tietojen käsittelyn tehokkuus.

Löydä 101 CSS ja Javascript oppaat.

Daniel Lewis on verkkosovellusten kehittäjä, konsultti, ohjaaja ja puhuja.