Լրացուցիչ Բլոկների Տեսակներ (EBT) - Դասավորության Կառուցողի նոր փորձառություն❗

Լրացուցիչ Բլոկների Տեսակներ (EBT) - ձևավորված, կարգավորելի բլոկների տեսակներ՝ սլայդշոուներ, ներդիրներ, քարտեր, բացվող ցանկեր և շատ ուրիշներ։ Ներառված կարգավորումներ՝ ֆոնի, DOM տուփի, JavaScript փլագինների համար։ Փորձեք դասավորությունների կառուցման ապագան արդեն այսօր։

EBT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EBT մոդուլները

❗Լրացուցիչ Պարբերությունների Տեսակներ (EPT) - Պարբերությունների նոր փորձառություն

Լրացուցիչ պարբերության տեսակներ (EPT) - անալոգիական պարբերության վրա հիմնված մոդուլների հավաքակազմ։

EPT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EPT մոդուլները

Scroll

Աշխատանք տվյալների բազայի հետ Drupal 7-ում - Դաս 1 - drupal db api

12/05/2025, by Ivan

Եթե դուք գրել եք մոդուլներ Drupal-ի 6-րդ տարբերակի համար, ապա ձեզ համար դժվար չի լինի անցում կատարել դեպի Drupal 7-ի database API: Նոր DB API-ն աշխատում է PHP-ի PDO ընդլայնման հիման վրա, ինչը նրան հնարավորություն է տալիս աշխատել տարբեր տվյալների բազաների հետ, ինչպիսիք են MySQL, PostgreSQL, MSSQL և հնարավոր է նաև Oracle։ Պարզության մասին դժվար է խոսել, քանի որ պետք է սովորել նոր շարահյուսությանը, SQL հարցում գրելն ավելի սովորական է։

Ահա մի հատված պաշտոնական փաստաթղթերից՝

Drupal 7 Database API-ն տրամադրում է ստանդարտ, ինտուիտիվ տվյալների բազայի մուտքի աբստրակցիայի շերտ։ Այս API-ն ստեղծվել է՝ պահպանելով SQL-ի շարահյուսությունն ու ուժը այնքան, որքան հնարավոր է, սակայն նաև՝

  • Պարզեցնում է բազմաթիվ տվյալների բազաների սերվերների աջակցումը,
  • Թույլ է տալիս ստեղծել բարդ ֆունկցիոնալություն՝ օրինակ՝ տրանզակցիաներ,
  • Տրամադրում է կառուցվածքային ինտերֆեյս դինամիկ հարցումների կառուցման համար,
  • Ապահովում է անվտանգության ստուգում և լավ գործնականների կիրառում,
  • Մոդուլներին տալիս է մաքուր ինտերֆեյս՝ կայքի հարցումները որսալու և փոփոխելու համար,
  • Database API-ի հիմնական փաստաթղթավորումը առկա է հենց կոդում՝ մեկնաբանությունների տեսքով։ Handbook բաժինը նաև ունի API-ի ներածություն մոդուլների հեղինակների համար։ Այնուամենայնիվ, բոլոր հնարավորությունները կարող են չնկարագրվել handbook-ում։
  • Database API-ն կառուցված է օբյեկտային ծրագրավորման հիման վրա և փաստաթուղթը ենթադրում է առնվազն մասամբ ծանոթություն այդ գաղափարին։ Սակայն, հարցումների մեծ մասը հասանելի են ֆունկցիոնալ տեսքով, ինչը ընտրովի է մշակողների համար։

Drupal Database API-ի հիմնական գաղափարը

Տվյալների բազայի աբստրակցիայի շերտը (db layer) կառուցված է PHP PDO գրադարանի հիման վրա։ PDO-ն ապահովում է միատեսակ, օբյեկտային ինտերֆեյս՝ տարբեր բազաների հետ աշխատելու համար, սակայն չի ապահովում SQL-ի տարբեր դիալեկտների աբստրակցիա։

Դրայվերներ

Քանի որ տարբեր բազաներ ունեն տարբեր փոխազդեցության եղանակներ, Drupal-ի db շերտը պահանջում է յուրահատուկ դրայվեր յուրաքանչյուր բազայի տեսակի համար։ Դրայվերը բաղկացած են մի շարք ֆայլերից, որոնք տեղակայված են includes/database/driver ուղու մեջ, որտեղ driver-ը ստորակետի տեսքով ներկայացնում է այդ դրայվերի բանալին։ Շատ դեպքերում բանալին նույնական է բազայի անվան՝ փոքրատառ տարբերակով, օրինակ՝ "mysql", "pgsql" կամ "mycustomdriver":

Յուրաքանչյուր դրայվեր բաղկացած է մի քանի դասերից, որոնք ժառանգվում են հիմնական համակարգում առկա հիմնական դասերից։ Դրայվեր դասերը կարող են վերասահմանել այն պահվածքը, որը անհրաժեշտ է տվյալ բազայի ճիշտ աջակցման համար։ Դրայվերի դասերի անունները կազմվում են՝ հիմնական դասի անունը + ստորակետ + տվյալ դրայվերի անունը։ Օրինակ՝ MySQL-ի InsertQuery դասը կլինի InsertQuery_mysql:

Տվյալների բազայի միացում

Միացումը DatabaseConnection դասի օբյեկտ է, որը ժառանգվում է PDO-ից։ Drupal-ը յուրաքանչյուր տվյալների բազայի համար, որի հետ միանում է, պահում է առանձին միացում և դրա հետ կապված օբյեկտ։ Միացման օբյեկտը կարող է լինել հատուկ դաս տվյալ դրայվերի համար։

Միացման օբյեկտին հասանելիություն կարելի է ստանալ հետևյալ կերպ՝

<?php
$conn = Database::getConnection($target, $key);
?>

Կամ՝ որպեսզի հասնեք ակտիվ միացմանը՝

<?php
$conn = Database::getConnection();
?>

Այս կերպ կստանաք ակտիվ միացման օբյեկտը։

Շատ դեպքերում դուք կարիք չեք ունենա ուղղակիորեն դիմել միացման օբյեկտին։ Նախընտրելի է օգտագործել գործընթացային փաթեթավորիչը։ Միակ պատճառը՝ երբ ունեք բարդ հարցումներ տարբեր բազաների միջև և չեք ցանկանում փոխել ակտիվ միացումը։

Ակտիվ միացումը փոխելու համար օգտագործեք՝

<?php
db_set_active($key);
?>

Հարցումներ դեպի տվյալների բազա

Հարցումը SQL արտահայտություն է, որը ուղարկվում է տվյալների բազայի միացման միջոցով։ Drupal DB API-ն աջակցում է հարցումների 6 տեսակ՝ ստատիկ, դինամիկ, insert, update, delete և merge։ Որոշ հարցումներ կարելի է գրել որպես SQL տող՝ առանց օբյեկտ-կառուցողի։ Հարցման օբյեկտը վերաբերում է կառուցողի միջոցով կազմվող հարցման տեսակին։

Հարցման գրում

Հարցման օբյեկտը ստացվում է SELECT հարցման արդյունքով։ Այն միշտ կլինի DatabaseStatement տիպի օբյեկտ կամ դրա ենթադաս։ DatabaseStatement-ը ընդլայնում է PDOStatement-ը։

Drupal-ը օգտագործում է պատրաստի հայտարարություններ բոլոր հարցումների համար։ Դա նշանակում է՝ հարցումը նախապես կազմված է որպես ձևանմուշ, որտեղ արժեքները մուտքագրվում են կատարման պահին։ Սա թույլ է տալիս ապահովել SQL անվտանգություն և վերաօգտագործել հայտարարությունը։

Drupal-ը չի վերադարձնում այս հայտարարության օբյեկտը ուղղակիորեն։ Փոխարենը՝ ծրագրավորողը գրում է հարցման տեքստը, փոխանցում է արժեքները, ապա այն կատարվում է։