Drupal è sviluppato in PHP e utilizza la normale sintassi sia procedurale che orientata agli oggetti del linguaggio. A queste regole aggiunge alcune convenzioni relative ai nomi, ai namespace e alla posizione dei file.

Regole sulla nomenclatura

Supponendo di stare creando un modulo chiamato Nome Modulo nella cartella modules/custom/nome_modulo/:

Forma Esempio Utilizzo
Nome leggibile Nome Modulo Titoli, etichette e testi mostrati nell'interfaccia
Machine name nome_modulo Directory, file, namespace, hook e identificatori
PascalCase NomeModulo Nomi di classi, interfacce e trait quando contengono il nome del modulo (non è necessario che la classe contenga sempre il nome del modulo dato che viene usato il namespace di base Drupal\nome_modulo )
Nome con trattini nome-modulo Nomi dei file Twig derivati da identificatori contenenti underscore

All'interno della cartella modules/custom/nome_modulo possono esserci files e cartelle. I nomi dei files sono sempre composti dal machine name e un'estensione che indica il contenuto e la funzione del file:

  • nome_modulo.info.yml
  • nome_modulo.module
  • nome_modulo.install
  • nome_modulo.routing.yml
  • nome_modulo.services.yml
  • nome_modulo.permissions.yml
  • nome_modulo.links.menu.yml
  • nome_modulo.libraries.yml

La cartella modules/custom/nome_modulo contiene le cartelle:

  • config/
  • templates/
  • tests/
  • src/

La cartella templates contiene i files di template Twig, per i quali il carattere underscore viene convertito in trattino, quindi un possibile nome di file è modules/custom/nome_modulo/templates/nome-modulo-forecast.html.twig.

All'interno della cartella modules/custom/nome_modulo/src/ si trova il codice OOP, tipicamente le cartelle:

  • Controller/
  • Form/
  • Plugin/
  • Hook/
  • EventSubscriber/

Ad esempio nella cartella modules/custom/nome_modulo/src/Form potremo avere la classe SettingsForm dove il namespace sarà Drupal\nome_modulo\Form.