PHP datu objektu izmantošana

  • Nepieciešamās zināšanas: Dažas zināšanas par PHP un SQL ir noderīgas
  • Nepieciešama: Tīmekļa serveris (piemēram, Apache) ar ielādētu PHP un relāciju datu bāzes pārvaldības sistēma, kas spēj nodrošināt ACVN savienojamību (piemēram, MySQL); ODBC un Mācība 2 ir papildu izvēles iespējas
  • Projekta laiks : 1–3 stundas (vai vairāk, atkarībā no tā, cik mācīšanās ceļš un spējas)
  • Avota fails

Šis raksts pirmo reizi parādījās 231. izdevums no .net žurnāla.

Mūsdienās dinamiska vietņu un lietojumprogrammu izstrāde, šķiet, ir izplatītāka nekā statiska vietņu izveide, un līdz ar dinamisku attīstību rodas nepieciešamība saglabāt datus.

Populāra datu bāzes pārvaldības sistēma, kas tiek izmantota līdzās PHP valodai, ir MySQL datu bāze, turklāt diezgan izplatītas ir arī Microsoft SQL, PostgreSQL un Oracle. Sākotnēji PHP izstrādātāju grupa atviegloja savienojumu izveidi starp PHP un datu bāzes sistēmām, izmantojot tādas datu bāzes sistēmas funkcijas kā:



MySQL: resurss mysql_query (virkne $ query [, resurss $ link_identifier])
Microsoft SQL: jaukts mssql_query (virkne $ query [, resurss $ link_identifier [,
int $ batch_size = 0]])
PostgreSQL: resurss pg_query ([resurss $ savienojums], virkne $ vaicājums)
Oracle datu bāze: bool oci_execute (resurss $ paziņojums [, int $ mode = OCI_
COMMIT_ON_SUCCESS])



pildspalvu un tintes mākslinieki 19. gs

Kā redzams no definīcijām, viņiem nav standartizētas formas, tādēļ, ja datu bāzu sistēma būtu jāmaina no Oracle uz MySQL, jums jāizstrādā kods un jāmaina savienojuma izveide ar datu bāzi. Tas ir arī ērkšķis, mācoties par datu bāzes savienojamību PHP: jūs nevarat vienkārši pārsūtīt savas zināšanas, piemēram, no PostgreSQL uz Microsoft SQL.

01. PHP datu objektu (ACVN) filozofija

Par laimi PHP pastāv datu bāzes savienojamības glābējs - tas ir trīs burtu akronīma ACVN formā, kas nozīmē PHP datu objektus. ACVN bibliotēkas ideja ir tāda, ka tā nodrošina standartizētu pamatu, kurā varat izveidot savienojumu ar jebkuru relāciju datu bāzes pārvaldības sistēmu (RDBMS), par kuru var jautāt, izmantojot SQL.



Ar nelielu veiksmi jūsu ACVN izveidošanas skriptam jūsu datu bāzē jāizveido derīga tabula, piemēram, iepriekš minētā

Ar nelielu veiksmi jūsu ACVN izveidošanas skriptam jūsu datu bāzē jāizveido derīga tabula, piemēram, iepriekš minētā

Rakstīšanas laikā tas ietver CUBRID, Firebird, Interbase, IBM DB2, Informix, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, SQLite, 4D - un jebkuru datu bāzi, kas ir savienojama ar ODBC.

Ņemot ātru konceptuālu izmaiņu piemēru, mēs jau iepriekš būtu redzējuši:

_vaicājums ($ kvl);



Tagad mēs redzam standartizētu funkciju kopumu, kas izskatās mazliet šādi:

$ conn-> vaicājums ($ sql);

Bet pagaidām ar to ir pilnīgi pietiekami - apskatīsim šo spēcīgo bibliotēku darbībā! ACVN ir divi atšķirīgi aspekti, no kuriem pirmais ir savienojums - kas noteikti ir nepieciešams elements -, savukārt otrā puse ir vaicājuma elements.

02. Savienojuma izveide ar datu bāzes pārvaldības sistēmu

Pirms pieprasām jebkādus datus, mums ir jāizveido savienojums ar jau instalētu un iestatītu datu bāzes pārvaldības sistēmu. Pirmajam piemēram mēs izveidosim savienojumu ar MySQL datu bāzi, kas darbojas vietējā mitinātājā:

ACVN ('mysql: host = localhost; dbname = yourdbname', 'lietotājvārds', 'parole');

Salīdzināsim to ar savienojumu ar PostgreSQL datu bāzi:

w ACVN ('pgsql: host = localhost; dbname = yourdbname', 'lietotājvārds', 'parole');

Savienojumi tiek standartizēti, pateicoties pirmajam piemēram, izmantojot to pašu funkciju, bet otrajā tiek izmantota standartizētā datu avota nosaukuma (DSN) sistēma. Jūs varat sākt saprast, cik viegli tas ir, ja vēlaties vienkārši pāriet no vienas datu bāzes pārvaldības sistēmas uz citu.

Drupal 7 aiz datu bāzes abstrakcijas slāņiem ir ACVN. Drupal oficiālā dokumentācija par tiem ir lielisks veids, kā uzzināt vairāk par integrāciju

Drupal 7 aiz datu bāzes abstrakcijas slāņiem ir ACVN. Drupal oficiālā dokumentācija par tiem ir lielisks veids, kā uzzināt vairāk par integrāciju

03. Vaicājumu un rezultātu lasīšana

Datu vaicāšana sākotnēji ir interesantāka nekā datu veidošana, un tā kā šī ir apmācība par datu savienojamību, nevis par SQL, mēs tūlīt ķersimies pie vaicājumiem un vēlāk apmeklēsim izveidi, ievietošanu, atjaunināšanu un dzēšanu.

Mēs pieņemsim, ka mums ir tabula ar nosaukumu profils , kurā ir uzskaitīta dažāda informācija par hipotētiskas tīmekļa lietojumprogrammas lietotājiem. Piemēram, palaidīsim ātru profila ielādi SQL, izmantojot ACVN, un pēc tam vienkārši atkārtosim pilnus vārdus. Ievērojiet, kā vaicājuma funkciju var izmantot kā iteratoru - funkciju, kas atmiņā saglabā rādītāju masīva pašreizējam elementam (vai šajā gadījumā rezultātu kopai). Kad tas tiek apvienots ar a katram cilpa ļauj ātri un viegli piekļūt rindām:

$ conn = new $ conn = new $ conn = new $ conn = neforeach ($ conn-> vaicājums ('SELECT * FROM profils') kā $ rinda) atbalss
$ rinda ['pilns nosaukums'];

Protams, tas ir ātri un viegli, taču mēs gandrīz nekad nevēlamies ielādēt visas rindas; tāpēc pievienosim dažus nosacījumus, izmantojot mainīgu injekciju. Šeit mēs izmantojam stingrāku vaicājumu metodi, kas sagatavo vaicājumu un injicē mainīgos:

$ query = $ conn-> sagatavot ('SELECT * FROM profile WHERE lietotājvārds =
: lietotājvārds LIMIT 1 ');
$ query-> bindParam (': lietotājvārds', 'knightofarcadia');
$ vaicājums-> izpildīt ();
$ profile = $ query> ielādēt (ACVN :: FETCH_ASSOC);
echo $ profile ['fullname'];

Iepriekš minētais kods profila tabulas meklēšanu ierobežos tikai ar vienu profilu ar lietotāja vārdu knightofarcadia . Tāpat kā mūsu pirmais piemērs, pēc tam tas vienkārši izdrukās pilnu vārdu, bet jūs noteikti varat iedomāties, ka izveidosiet visu XHTML lapu, kurai dati tiks nodoti.

PHP datu objektu bibliotēka palīdz darboties Facebook HipHop Engine, kas līdz pat 50 procentiem var samazināt CPU izmantošanu savos tīmekļa serveros.

PHP datu objektu bibliotēka palīdz darboties Facebook HipHop Engine, kas līdz pat 50 procentiem var samazināt CPU izmantošanu savos tīmekļa serveros.

Tomēr mūsu vaicājumā varētu būt atgrieztas vairākas rindas, un tāpēc mēs spējam to izmantot atnest metode kā iterators. Šeit mēs redzam citu vaicājumu, kas atgriež vairāku rindu rezultātu kopu:

$ query = $ conn-> sagatavot ('SELECT * FROM profile WHERE hometown =: hometown');
$ query-> bindParam (': dzimtā pilsēta', 'Wessex');
$ vaicājums-> izpildīt ();
foreach ($ query-> ielādēt (ACVN :: FETCH_ASSOC) kā $ rinda) {
echo $ row ['fullname'];
}

Iepriekš minētais gadījums meklēs profilu datu bāzē un atgriezīs visus profilus, kuriem ir dzimtā pilsēta iestatīts uz Wessex . The atnest metode tiek izmantota, lai atgrieztu visus šos rezultātus, un, lai iegūtu vienkāršu piemēru, mēs varam vienkārši izdrukāt pilnu vārdu ekrānā - lai gan tā varētu būt sarežģītāka XHTML lapas darbība.

04. Radīšana

Lai gan es atbalstītu datu bāzes struktūras izveidošanu, kas tiek veikta SQL tieši datu bāzes pārvaldības sistēmā, ir iespējams dinamiski izveidot datu bāzes tabulas, izmantojot ACVN sagatavoto SQL:

$ createql = $ conn-> sagatavot ('CREATE TABLE profilus (lietotājvārds VARCHAR (64), pilns nosaukums VARCHAR (128), dzimtā pilsēta VARCHAR (128)'));
$ conn-> vaicājums ($ izveidoql);

labākais macbook video rediģēšanai 2017. gadā

Lūdzu, atcerieties, ka vaicājumu objekts šajā gadījumā neatgriezīs neko vērtīgu, jo tā ir izveides komanda. Kā jau minēts, ir vērts mēģināt izvairīties no tā, ka šādā veidā tiek dinamiski izveidotas tabulas tīmekļa lietojumprogrammā, lai gan es varu iedomāties, ka to izmanto “vienreiz palaistu” tīmekļa sistēmās (piemēram, serveru tīmekļa lietojumprogrammu instalētājos), kā kā arī vienkāršos servera skriptos, kuru pamatā nav tīmeklī.

Šeit ir objekta modelis, kas atbilst šajā apmācībā izmantotajam PHP koda piemēram

Šeit ir objekta modelis, kas atbilst šajā apmācībā izmantotajam PHP koda piemēram

05. Ievietošana

Datu ievietošana ir ļoti svarīga dinamiskā sistēmā, it īpaši mūsdienu Web 2.0 un Web 3.0 sistēmās, kas ir orientētas uz sadarbību un sadarbību - kā lietotāji var sadarboties, ja viņiem nav iespēju uzglabāt un koplietot datus? Tāpēc ievietosim dažus datus mūsu profila tabulā šādi:

$ insertsql = 'INSERT INTO profilus (lietotājvārds, pilns vārds, dzimtā pilsēta) VALUES (: lietotājvārds,: pilns vārds,: dzimtā pilsēta)';
$ query = $ conn-> sagatavoties ($ insertsql);
$ query-> bindParam (': lietotājvārds', 'knightofarcadia');
$ query-> bindParam (': pilns nosaukums', 'Artūrs Pendragons');
$ query-> bindParam (': dzimtā pilsēta', 'Wessex');
$ vaicājums-> izpildīt ();

vaicājumu funkcija tabulu izveidē, šī izpildīt funkcija neatgriezīs neko vērtīgu, jo tā vienkārši ir ievietošanas komanda datu bāzē. Jūs ievērosiet arī to, ka mēs izmantojam tehniku ​​“sagatavot, sasaistīt un izpildīt”, lai ievadītu mūsu mainīgos mūsu SQL.

06. Atjaunināšana

Atjaunināšana, piemēram, ievietošana un dzēšana, ir izšķiroša sadarbības sistēmā, un ACVN to padara viegli. Atjaunināšana ir diezgan līdzīga ievietošanai:

$ query = $ conn-> sagatavot ('ATJAUNINĀT profilus SET fullname =: fullname WHERE
lietotājvārds =: lietotājvārds ');
$ query-> bindParam (': pilns nosaukums', 'Artūrs Pendragūns');
$ query-> bindParam (': lietotājvārds', 'knightofarcadia');
$ vaicājums-> izpildīt ();

Iepriekš minētais koda bloks tikai aizstāj pilnu lietotāja vārdu, taču pamanīsit, ka tas praktiski ir identisks ievietošanas kodam. Mēs saistām nosacītu rezultātu, šajā gadījumā lietotājvārdu, un saistām iestatījuma rezultātu, šajā piemērā jauno pilnu vārdu.

Vienkāršs relāciju datu bāzes modelis, kurā ir normalizēta saikne starp daudziem - aptuveni tāda veida struktūra, kādu doktrīna veidos no ORM definīcijas

Vienkāršs relāciju datu bāzes modelis, kurā ir normalizēta saikne starp daudziem - aptuveni tāda veida struktūra, kādu doktrīna veidos no ORM definīcijas

07. Svītrojums

Visbeidzot, apskatīsim dzēšanu, kas bieži ir vienkāršāks process nekā ievietošana vai atjaunināšana.

kā izmantot otu Photoshop

$ query = $ conn-> sagatavot ('Dzēst profilus WHERE' lietotājvārds '=
: lietotājvārds);
$ query-> bindParam (': lietotājvārds', 'knightofarcadia');
$ vaicājums-> izpildīt ();

Iepriekš minētā SQL vienkārši izdzēš profilu, kurā mēs sakrītam ar lietotājvārdu. Mēs vienkārši saistām lietotājvārdu ar nosacīto mainīgo.

08. Datu bāzes pārvaldības sistēmas maiņa

Tagad, nodrošinot, ka datu bāzes tabulas struktūra ir identiska un ka patentētā SQL sistēmā mēs neizmantojam neko nestandartizētu, mēs varam vienkārši mainīt datu avota nosaukumu uz punktu no viena RDBMS - mūsu sākotnējā piemērā Microsoft SQL Server - uz citu (piemēram, IBM DB2). Darbosies viss kods, ko mēs no tā laika esam darījuši - nemainot nekādu SQL.

Mēs sāksim ar mūsu savienojuma virkni, kas izskatās šādi:

$ conn = jauns ACVN ('sqlsrv: server = localhost; datu bāze = yourdbname',
'lietotājvārds',
“parole”);
$ conn = jauns ACVN ('ibm: DRIVER = {IBM DB2 ODBC DRIVER}; DATU BĀZE = jūsu
bname; HOSTNAME = localhost; PORT = 56789; PROTOCOL = TCPIP; ',' lietotājvārds ',
“parole”);

Vēl viens no ACVN bibliotēkas galvenajiem lietotājiem ir MediaWiki, lietotne, kas nodrošina visu Wikipedia Foundation projektu vadību

Vēl viens no ACVN bibliotēkas galvenajiem lietotājiem ir MediaWiki, lietotne, kas nodrošina visu Wikipedia Foundation projektu vadību

09. Darījumi

Darījums datubāzes izteiksmē ir tas, kur jūs saglabājat vaicājumu kopu, lai vēlāk paketes procesu. ACVN nodrošina darījumu izveidošanas mehānismu, taču, tā kā tie ir ļoti atkarīgi no datu bāzes pārvaldības sistēmas, ACVN transakcijas darbojas tikai tad, ja tiek izveidots savienojums ar RDBMS apakškopu, kuru ACVN atbalsta. Ja mēģināt sākt darījumu ar RDBMS, kas neatbalsta darījumus, jūs saņemsiet diezgan nepatīkamu ACVN darījumu. Tāpēc analizēsim dažus darījumu kodus:

izmēģināt {
$ conn-> beginTransaction ();
$ insertsql = $ conn-> sagatavot ('INSERT INTO profilus (lietotājvārds, pilns vārds,
dzimtā pilsēta) VĒRTĪBAS ('Wilfred', 'Wilfred Jones', 'Scarborough') ');
$ deletesql = $ conn-> sagatavot ('Dzēst profilus WHERE lietotājvārds =
'lietotājvārds' ');
$ conn-> exec ($ insertsql);
$ conn-> exec ($ deletesql);
$ conn-> izdarīt ();
} nozveja (izņēmums $ e) {
$ conn-> rollBack ();
// ziņa pieejama ar: $ e-> getMessage ();
}

Vispirms mēs sākam mēģinājumu noķert, lai mēs varētu noķert visus sliktos izņēmumus, tostarp tos, kurus jūs varat saņemt, mēģinot izveidot savienojumu ar RDBMS, kuram nav darījumu atbalsta. Mēs sākam darījumu ar $ conn-> beginTransaction () pirms turpināt veidot vaicājumu izpildes, taču tās datu bāzē netiks pilnībā izpildītas, kamēr $ conn-> apņemties () funkcija tiek palaista, un tie tiks veikti efektīvā sērijas secībā - tas nozīmē, ka starp izpildes komandām varat veikt dažādus citus PHP procesus, neietekmējot datu bāzi.

Ja mēs atklājam, ka datu bāze neatbalsta darījumus, darījums vienkārši nenotiks; ja tiek izmests kāds cits izņēmums, mēs izpildām $ conn-> atgriezties () , kas atsauks visas ar darījumu veiktās izmaiņas. Ir vērts atzīmēt, ka, izveidojot savienojumu ar darījumiem atbalstītu RDBMS, ACVN nonāks “automātiskās saistības” stāvoklī, kur katra exec komanda pati par sevi ir viņa izdarītais darījums; tomēr, ja vēlaties strādāt drošā veidā, to vienmēr varat izmantot sāktTransaction un viņiem ir piekļuve paketes saistīšanai un atcelšanas funkcionalitātei.

10. Problēmas ar ACVN

No PHP viedokļa nav reālu problēmu, lietojot ACVN. Tas ir orientēts uz objektu, proti, tas ir paplašināms un elastīgs, kā arī savienojams daudzās sistēmās. Problēma rodas, ja mēs uzskatām, ka, lai gan lielākā daļa relāciju datu bāzu pārvaldības sistēmu ievēro SQL standartizāciju (tādējādi palīdzot mums pāriet no vienas sistēmas uz otru), daudzām sistēmām ir sava patentēta sintakse un funkcijas, kas nav izplatītas citas sistēmas.

Tāpēc ir ļoti svarīgi, lai vienmērīgai pārejai no vienas sistēmas uz otru jūs sekotu SQL standartiem un izmantotu tikai parasti atrodamās funkcijas. Lai to parādītu, ir vaicājumos parasti izmantota funkcija: mēs varam aplūkot nejaušināšanas funkciju SQL. Šeit ir dažādu valodu funkciju specifikācijas:

MySQL: SELECT RAND ([sēkla]);
MS SQL: SELECT RAND ([sēkla]);
PostgreSQL: SELECT RANDOM (); (lai iestatītu sēklu, jums jāpalaiž SETSEED ([sēkla])
iepriekš)
Oracle DB: SELECT dbms_random.random FROM dual;
SQLite: SELECT RANDOM ();

Tāpēc mums tas jāpatur prātā un jānoskaidro, vai mēs varam vai nu izmantot standartizētu SQL tehniku, nevis patentētu funkciju, vai arī izmantot PHP procedūru un ievadīt rezultātu SQL vaicājumā (nejaušības piemērā mēs varētu izmantot rinda () funkcija, kuru nodrošina PHP).

Lietotne Gedit operētājsistēmā Linux ir viens no ātrākajiem koda modificēšanas veidiem, un tai ir sintakses izcelšana daudzām valodām. Tas izmanto Doctrine ORM sistēmu

Lietotne Gedit operētājsistēmā Linux ir viens no ātrākajiem koda modificēšanas veidiem, un tai ir sintakses izcelšana daudzām valodām. Tas izmanto Doctrine ORM sistēmu

11. Objekta relāciju kartēšana ar piemēru

Protams, abstrakcijā mēs varam iet tālāk, iekļūstot modelēšanas pasaulē - nē, nevis izstādot savu projektu uz gājēju ceļa, bet gan kartējot vienkāršos vecos PHP objektus datu bāzes tabulās. Problēma ir ar šo neseno PHP objektiem ir objektorientēts modelis, savukārt SQL datu bāzēm ir relāciju modelis. Šeit parādās objektu relāciju kartēšana (ORM): tā ļauj objektus kartēt pie tabulām, bieži izmantojot mazliet burvju un nedaudz dzirksti.

Jūs droši vien jautājat, kāds ir ORM ieguvums. Vienkārši, jums nav jārisina neviens no datu bāzes savienojamības vai SQL vaicājumiem; jūs vienkārši izmantojat tieši PHP objektus un to metodes, un ORM sistēma nodarbojas ar visu savienojamību un izveides, lasīšanas, atjaunināšanas un dzēšanas darījumiem fonā. PHP ir diezgan daudz ORM bibliotēku, PdoMap , Dzīt un Sarkana pupa esmu viens no labajiem, bet labākais, ko esmu izmantojis, ir Mācība 2 - tā priekšrocība ir tā, ka to var vai nu izmantot atsevišķi, vai arī kā daļu no MVC iestatīšanas, piemēram, Symfony, CodeIgniter vai Zend.

Izmantojot 2. doktrīnu un dažas citas ORM sistēmas, parasti jūs definējat objektu kopu un to savstarpējo attiecību veidu (piemēram, viens pret daudziem; daudzi pret vienu; daudzi pret daudziem) , ar īpašu informāciju par īpašību un metožu saistību. Protams, nav jādefinē normalizētas saišu tabulas, jo tām nav nozīmes objekta modelī. Šis cilvēka izpildītais process parasti tiek veikts, izmantojot pielāgotu sintaksi, piemēram, XML vai YAML, un 2. doktrīna ļauj objektu relācijas definīcijas PHP doku blokos. Šis modelis un kods apraksta piemēru reālajā dzīvē.

izmantojiet Doctrine Common Collections ArrayCollection;
/ ** Dalībnieka apraksts
* @Entity
* /
klases loceklis {
/ **
* @Id @GeneratedValue
* @Column (tips = 'vesels skaitlis')
* @Nebija
* /
aizsargāts $ id;
/ ** @Column (type = 'string')
* @var virkne
* /
aizsargāts $ vārds;
/ ** @Column (type = 'string')
* @var virkne
* /
aizsargāts $ uzvārds;
/ ** @Column (type = 'string')
* @var virkne
* /
aizsargāts $ e-pasts;
/ ** Daudziem dalībniekiem ir dalība daudzās grupās
* @ManyToMany (targetEntity = 'Grupa')
* @var grupa []
** /
aizsargātas $ grupas;
/ **
* Celtnieks
* /
publiskā funkcija __construct () {
$ this-> groups = new ArrayCollection ();
// ...
}
// --- Getter and setter piemēri --- //
/ ** Iegūst dalībnieka (iekšējo) ID
* @return int
* /
publiskā funkcija getId () {
atgriezt $ this-> id;
}
/ ** iegūst dalībnieka vārdu
* @return virkne
* /
publiskā funkcija getFirstname () {
atgriezt $ this-> vārdu;
}
/ ** Iestata dalībnieka vārdu
* @param string $ vārds
* /
publiskā funkcija setFirstname ($ firstname) {
$ this-> firstname = $ firstname;
}
// --- sarežģītāki getter un setter piemēri --- //
/ ** Saņem grupas dalībnieku masīvu
* @return grupa []
* /
publiskā funkcija getGroups () {
atgriezt $ this-> grupas;
}
/ ** Piešķir dalībniekam grupu
* @param Group $ grupa
* /
publiskā funkcija assignToGroup (Group $ group) {
$ šī-> grupas [] = $ grupa;
}
/ ** Noņem dalībnieku no grupas
* @param Group $ grupa
* /
publiskā funkcija removeFromGroups (Group $ group) {
$ this-> getGroups () -> removeElement ($ group);
}
// ...
}
?>

Pēc tam ar mašīnu izpildīts process var ģenerēt SQL, lai izveidotu datu bāzi (tas var būt dažādos SQL sintaksēs, piemēram, MySQL, SQL Server vai PostgreSQL); to var izdarīt, izgāžot SQL vai izveidojot savienojumu ar datu bāzi un pats to izpildot. Tas pats izveidos saites tabulas no daudziem līdz daudziem.

doktrīna orm: schema-tool: izveidot

vai

doktrīna orm: schema-tool: create --dump-sql

Jūs atradīsit, ka tagad esat ieguvis PHP objektus un tabulas. Tagad jūs varat tikt galā ar objektiem, nezinot, kā izveidot savienojumu ar datu bāzes pārvaldības sistēmu, vai relāciju tabulu struktūru.

$ grupa = jauna grupa ();
// iestatiet grupas informāciju, saglabājiet un noskalojiet (kā norādīts zemāk)
$ biedrs = jauns loceklis ();
$ member-> setFirstname ('');
$ member-> setSurname ('');
$ biedrs-> setEmail ('');
$ biedrs-> assignToGroup ($ grupa);
$ entityManager-> persist ($ biedrs);
$ entityManager-> flush ();
atbalss 'Izveidots loceklis ar ID'. $ biedrs-> getId (). ' n';

Protams, tajā ir nedaudz vairāk par iepriekšminētajiem kodu piemēriem, galvenokārt attiecībā uz savienojuma detaļām un sāknēšanu, taču es domāju, ka man jums vajadzētu dot garšu ORM un it īpaši doktrīnas spēkam. Man jāpiebilst, ka 2. doktrīnā un pāris citās PHP ORM bibliotēkās tiek izmantots ACVN, lai panāktu atbalstu dažādām dažādām RDBMS.

labākie klēpjdatoru piedāvājumi kiber pirmdiena, 2017

Noderīgi, ka doktrīnas sistēma ietver plašu iebūvētu palīdzību, kad vien jums to vajag

Noderīgi, ka doktrīnas sistēma ietver plašu iebūvētu palīdzību, kad vien jums to vajag

12. Secinājums

Esmu izmantojis ACVN komerciālos projektos, un, pateicoties savai pieredzei, tas ievērojami atvieglo savienojuma izveidi ar datu bāzi un pēc tam datu apstrādi, pateicoties objekta orientācijai. Nav nepieciešams izmantot ACVN tikai sistēmas pārslēgšanās iespēju dēļ; funkcijas ir paredzētas lietošanai, tām ir laba efektivitāte un tās ir ideāli piemērotas mūsdienu programmēšanas dizaina modeļiem.

Tur ir daudzas sistēmas, kas joprojām izmanto procesuālā stila sistēmas specifiskās funkcijas, taču es noteikti esmu redzējis, ka uzmanība tiek mainīta uz ACVN. Mēs varam redzēt ACVN arī darbībā savvaļā, jo Drupal, MediaWiki, WordPress un daudzas citas populāras atvērtā koda tīmekļa lietojumprogrammas tagad pilnībā vai daļēji atbalsta ACVN sistēmu savienojumam ar datu bāzēm. Man ir vīzija, kurā dati vairs nav cieši saistīti ar datu bāzēm, un datu bāzes vairs nav cieši saistītas ar kodu, un mēs redzam, ka vispārīgākas sistēmas ir konfigurētas konkrētām lietojumprogrammām. Es domāju, ka ORM sistēmas, NoSQL un saistītie dati ir trīs lietas, uz kurām jāpievērš uzmanība tagadnei un nākotnei. Nākamo tīmekļa lietojumprogrammu slepkavas funkcijām, pirmkārt, būs datu savienojamības pamati, otrkārt, ar šo datu manipulācijas efektivitāti.

Atklājiet 101 CSS un Javascript konsultācijas.

Daniels Lūiss ir tīmekļa lietotņu izstrādātājs, konsultants, pasniedzējs un runātājs.