Նախագծի սկիզբ - տեղեկատու տեղեկատվություն (Drupal 8)
Drupal 8-ը օգտագործում է PHP-ի մի շարք առաջադեմ ֆունկցիաներ և բարդ երրորդ կողմի գրադարաններ՝ երրորդ կողմի մշակողներին տրամադրելու ամենասահուն API-ն բոլոր հասանելի CMS-երից։ Թեև փորձառու Drupal 7 մշակողները կարող են նկատել որոշ նշանակալի փոփոխություններ, հիմնական կառուցվածքի մեծ մասը կմնա ծանոթ։
Եթե որևէ նյութ, որը ներկայացվում է D8 մոդուլի մշակողի քայլ առ քայլ ուղեցույցում, ձեզ նոր է, ապա ստորև ներկայացված նյութը կարող է օգնել։ Այնուամենայնիվ, D8 մոդուլի նկարագրության հասնելու համար ամենապարզ գիտելիքները բավարար են։
Օբյեկտամուղ համարվող ծրագրավորում (OOP)
OOP-ը, չնայած սկզբում կարող է վախեցնող թվալ, այժմ լավ հայտնի է որպես լավագույն մեթոդ։
PHP-ի լավագույն պրակտիկայի ընդհանուր տեսության համար կարդացեք phptherightway.com-ը։ Drupal-ը չօգտագործում է այնտեղ նկարագրված բոլոր գործիքներն ու մեթոդները, բայց դա գերազանց ներածություն է PHP-ին և լեզվի բազմաթիվ ֆունկցիաներին։
Թարմացրեք ձեր OOP գիտելիքները՝ կարդալով PHP-ի պաշտոնական փաստաթղթերը դասարանների և օբյեկտների մասին, ինչպես նաև հետևյալ լավ դասընթացները․
- PHP-ի OOP լիարժեք ազդեցությամբ
- Օբյեկտամուղ համարվող ծրագրավորում (Վիքիպեդիայում)
- Օբյեկտամուղ PHP սկսնակների համար (tuts+)
- Օբյեկտամուղ գաղափարներ (tutorialspoint.com)
- PHP-ում օբյեկտամուղ ծրագրավորում (phpro.org)
- PHP-ում օբյեկտամուղ ծրագրավորում (youtube.com)
- Ծրագրավորման հիմունքներ․ օբյեկտամուղ դիզայն (lynda.com)
- 12 կարևոր PHP OOP կոնցեպտներ
- OOP դասընթաց SymfonyCasts-ում (նախկին KNP university)
Drupal 8-ը նաև օգտագործում է որոշ տարածված նախագծման ձևանմուշներ, ուստի ցանկալի է ունենալ դրանց ընդհանուր պատկերացում։
Factory pattern և հետվերջին ստատիկ կապում
Ծրագրային ապահովման նախագծման ձևանմուշներ (Վիքիպեդիայում)
Ծրագրավորման հիմունքներ․ նախագծման ձևանմուշներ (lynda.com)
@todo: ավելացնել ավելի շատ հղումներ օգտագործվող ձևանմուշների վերաբերյալ...
PHP-ի անվան տարածքներ
Եթե չգիտեք PHP-ի namespace (անվան տարածքների) կոնցեպտը, փորձեք հետևյալ հոդվածներից որոշները.
- Ինչպես օգտագործել PHP-ի namespace-ները
- PHP-ի namespace-ներ
- PHP անվան տարածքների տեսանյութ
- PHP անվան տարածքների բացատրություն (Dayle Rees)
- PHP-ում namespace-ների օգտագործում (tuts+)
Առավել դեպքերում Drupal-ի կոդը namespace է՝ հիմնված մոդուլի վրա, որի հետ կոդը կապված է։
Օրինակ՝ block.module-ի namespace-ը՝
namespace Drupal\block;
@todo՝ բացատրեք, թե երբ դա Drupal\ է, երբ Drupal\\ [Controller|Form|Plugin| և այլն] և ինչպես պետք է իմանամ, թե որն օգտագործել...
Իմանալ ավելին Drupal-ի namespace ստանդարտների մասին։ Ավելին PSR-4 օգտագործման Drupal-ում։ Ճիշտ կազմաձևված կոդավորման ծրագրակազմը պետք է կարողանա ճանաչել PHP namespace-ները և ապահովել օգնություն ու ավտոմատ լրացում։
Աջակցման ներարկում (Dependency Injection)
Աջակցման ներարկումը, չնայած որ իրականում մեկ այլ OOP նախագծման ձևանմուշ է, այստեղ նշվում է, որովհետև Drupal 8-ը ինտենսիվորեն օգտագործում է այս կոնցեպտը, և կարևոր է ունենալ հիմնական գիտելիքներ, որպեսզի մուտք գործեք և օգտագործեք բազմաթիվ հիմնական API-ներ։
Կարդացեք PHP-ում dependency injection-ի մասին և հետևյալ էջի լրացուցիչ նյութերը։ Հատկապես ուշադրություն դարձրեք այս հոդվածին, քանի որ Drupal-ը ինտենսիվորեն օգտագործում է Symfony-ի ծառայությունների կոնտեյները, որի մասին խոսվում է։
Տես նաև՝
Symfony
Symfony-ն PHP ֆրեյմվորք է, որը Drupal-ը վերցրել է PHP նախագծերում կոդի կրկնությունը նվազեցնելու համար։ Drupal 8-ում մեծ մասը այն կոդի, որը օգտագործվում է երթուղավորման, սեսսիաների և ծառայությունների կոնտեյների կառավարումը, այդ թվում, վերցված է Symfony 2-ից (և Drupal 8-ի զարգացման ընթացքում տեղափոխվել է Symfony 3)։ Եթե ցանկանում եք իմանալ, թե ինչու է սա ընդունվել, դիտեք այս ներկայացումը գլխավոր commit գրող alexpott-ի կողմից։
Դիտեք Symfony 2-ի գիրքը և թարմացրեք ձեր Symfony գիտելիքները։ Թեև դա ամբողջովին պարտադիր չէ Drupal-ի հասկանալու համար, Symfony-ի աշխատանքը իմանալը կդարձնի ձեզ ավելի լավ Drupal և PHP մշակող։ Կարող է հետաքրքրել նաև Symfony տերմինաբանությունը։
Դիտեք core/composer.lock ֆայլը՝ տեսնելու Symfony գրադարանները։ Drupal 8 8.6.15-ից սկսած Symfony PHP և սերտ կապված գրադարաններ են՝
...
"symfony/class-loader": "~3.4.0",
"symfony/console": "~3.4.0",
"symfony/dependency-injection": "~3.4.26",
"symfony/event-dispatcher": "~3.4.0",
"symfony/http-foundation": "~3.4.26",
"symfony/http-kernel": "~3.4.14",
"symfony/routing": "~3.4.0",
"symfony/serializer": "~3.4.0",
"symfony/translation": "~3.4.0",
"symfony/validator": "~3.4.0",
"symfony/process": "~3.4.0",
"symfony/polyfill-iconv": "^1.0",
"symfony/yaml": "~3.4.5",
"twig/twig": "^1.38.2",
"doctrine/common": "^2.5",
"doctrine/annotations": "^1.2",
...
Նշումներ (Annotations)
Drupal 8-ը օգտագործում է PHP annotations (հարցումներ՝ @docblock), որոնք ավելացված են ձեր կոդում հատուկ սինտաքսով՝ պլագինների հայտնաբերման և կատարվող կոդի լրացուցիչ կոնտեքստի/մետատվյալների տրամադրման համար։ Նշումները կարդացվում են Doctrine annotations վերլուծիչով (v.1.6) և վերածվում են տեղեկության, որը Drupal-ը կարող է օգտագործել՝ ձեր կոդի նպատակը ավելի լավ հասկանալու համար։
Իմանալ ավելին պլագինների հայտնաբերման համար annotations-ի օգտագործման մասին։
Դիտեք Drupal 8-ի բոլոր տարբեր annotation-ների ցանկը։
Տես նաև՝ PHPDoc (Վիքիպեդիայում)
Պլագիններ
Պլագինները տրամադրում են փոքրատև ֆունկցիոնալություն այնպես, որ դրանք հեշտությամբ կարող են փոխարինվել մյուս պլագիններով։ Նույն ֆունկցիոնալությունը իրականացնող պլագինները դասակարգվում են նույն տեսակի մեջ։ Օրինակ՝ «Դաշտի widget»-ը պլագինի տեսակ է, և յուրաքանչյուր առանձին դաշտի widget (օրինակ՝ տեքստային դաշտ, տեքստային տարածք, ամսաթիվ և այլն) իրականացվում է պլագինի միջոցով։
Իմանալ ավելին Drupal 8-ի պլագին API-ի մասին։
Ծառայություններ
Drupal 8-ում ծառայությունը ցանկացած օբյեկտ է, որը կառավարում է ծառայությունների կոնտեյները։ Ծառայությունների կոնցեպտը ներդրվել է վերադասելու բազմակի օգտագործվող ֆունկցիաները և դարձնելու այդ ծառայությունները միացվող և փոխարինելի՝ գրանցելով դրանք ծառայությունների և dependency injection-ի կոնտեյներ-ում, որոնց հետ նրանք սերտորեն կապված են։
Տես նաև՝ Ծառայությունների կոնտեյներ Drupal ծրագրավորողների համար
Այլ աղբյուրներ
Ներքևում նշված են հավելյալ ռեսուրսներ, որոնք կօգնեն ձեզ հարմարվել Drupal 8-ին։
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.