Početak rada – referentne informacije (Drupal 8)
Drupal 8 koristi niz naprednih PHP funkcija i složenih third-party biblioteka kako bi pružio eksternim programerima najsavremeniji API od svih dostupnih CMS-ova. Iako iskusni Drupal 7 programeri mogu primetiti značajne promene, većina osnovne strukture će im biti poznata.
Ako vam je neki od materijala predstavljenih u korak-po-korak vodiču za razvoj Drupal 8 modula nov, sledeći materijal može pomoći. Međutim, za prelazak na opis Drupal 8 modula nije potrebno imati duboko znanje.
Objektno-orijentisano programiranje (OOP)
OOP, iako u početku zastrašujuće, sada je prihvaćen kao najbolji pristup.
Za opšti pregled najboljih PHP praksi, pročitajte phptherightway.com. Drupal ne koristi sve tehnike dokumentovane tamo, ali je odličan uvod u PHP i mnoge funkcije jezika.
Osvežite znanje o OOP čitajući zvaničnu PHP dokumentaciju o klasama i objektima, kao i neke od sledećih kvalitetnih tutorijala:
- PHP OOP u punom efektu
- Objektno-orijentisano programiranje (na Vikipediji)
- Objektno-orijentisani PHP za početnike (na tuts+)
- Objektno-orijentisane koncepte (na tutorialspoint.com)
- Objektno-orijentisano programiranje u PHP-u (na phpro.org)
- Objektno-orijentisano programiranje u PHP-u (na youtube.com)
- Osnove programiranja: objektno-orijentisani dizajn (na lynda.com)
- 12 PHP OOP koncepata koje morate znati
- OOP kurs na SymfonyCasts (ranije KNP university)
Drupal 8 takođe koristi neke uobičajene dizajn paterne, pa je dobro da ih barem okvirno poznajete:
Factory pattern i late static bindings
Dizajn paterni softverskog inženjeringa (na Vikipediji)
Osnove programiranja: dizajn paterni (na lynda.com)
@todo: dodati dodatne linkove na dokumentaciju o paternu koje koristimo ...
PHP namespaces
Ako niste upoznati sa konceptom prostora imena u PHP-u, pogledajte neke od ovih članaka:
- Kako koristiti PHP namespaces.
- PHP: namespaces
- Video o PHP namespaces.
- Objašnjeni PHP namespaces (autor Dayle Rees)
- Namespaces u PHP-u (na tuts+)
U većini slučajeva, Drupal kod koristi namespace baziran na modulu kojem kod pripada.
Primer: namespace za block.module
namespace Drupal\block;
@todo: objasniti zašto je ponekad Drupal\, a ponekad Drupal\\[Controller|Form|Plugin| itd.] i kako da znam koji koristiti...
Saznajte više o Drupal standardima za namespaces. Više o korišćenju PSR-4 u Drupalu. Ispravno podešen softver za kodiranje treba da prepoznaje PHP namespaces i da pruža pomoć i automatsko dopunjavanje.
Dependency Injection (DI)
Iako je Dependency Injection ustvari još jedan OOP dizajn pattern, ovde ga posebno ističemo jer Drupal 8 intenzivno koristi ovu koncepciju i važno je imati osnovno razumevanje da biste pristupili i koristili mnoge osnovne API-je.
Pročitajte o Dependency Injection u PHP-u i drugim povezanim člancima na toj stranici. Posebno ovaj članak, jer Drupal intenzivno koristi Symfony servisni kontejner, na koji se poziva.
Pogledajte i:
- Servisi i Dependency Injection u Drupal 8
- Dependency Injection (na Vikipediji)
Symfony
Symfony je PHP framework koji je Drupal pozajmio da bi smanjio dupliranje koda u različitim PHP projektima. Veći deo koda koji Drupal 8 koristi za upravljanje rutiranjem, sesijama i servisnim kontejnerom, između ostalog, pozajmljen je iz Symfony 2 (a tokom razvoja Drupal 8 prebačen u Symfony 3). Ako želite da saznate više o razlogu ove odluke, pogledajte ovu prezentaciju glavnog commiter-a alexpott.
Pregledajte Symfony 2 dokumentaciju i osvežite svoje znanje o Symfony-ju. Iako nije sve potrebno za razumevanje Drupala, poznavanje Symfony-ja učiniće vas boljim Drupal i PHP programerom. Možda vas zanima i Symfony rečnik.
Pogledajte core/composer.lock da vidite Symfony biblioteke. Od Drupala 8.6.15 to su Symfony PHP i povezane biblioteke:
...
"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",
...
Annotacije
Drupal 8 koristi PHP annotacije — @docblock komentare dodate u vaš kod pomoću posebnog sintaksisa — za otkrivanje plugina i pružanje dodatnog konteksta/metapodataka za izvršni kod. Annotacije se čitaju korišćenjem Doctrine Annotation Parser-a (v.1.6.), a zatim se prevode u informacije koje Drupal koristi da bi bolje razumeo šta vaš kod radi.
Saznajte više o korišćenju annotacija za otkrivanje plugina.
Pogledajte listu svih različitih tipova annotacija u Drupalu 8.
Pogledajte i: PHPDoc (na Vikipediji)
Pluginovi
Pluginovi obezbeđuju male funkcionalnosti koje se lako mogu zameniti drugim pluginom. Pluginovi koji imaju sličnu funkcionalnost spadaju u isti tip. Na primer, „Field Widget“ je tip plugina, i svaki pojedinačni widget polja (kao što su tekst polje, broj, datum itd.) implementiran je kao plugin.
Saznajte više o Drupal 8 Plugin API-ju.
Servisi
U Drupalu 8, servis je bilo koji objekat koji upravlja servisni kontejner. Koncept servisa uveden je da bi se razdvojile višekratno korišćene funkcije i učinilo ih povezivim i zamenjivim, registrujući ih u servisnom kontejneru za Dependency Injection, sa kojim su usko povezani.
Pogledajte i: Servisni kontejner za Drupal programere
Ostali izvori
Donji spisak sadrži dodatne resurse koji vam mogu pomoći da se bolje upoznate sa 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.