Coding Standards

I file che contengono esclusivamente PHP non terminano con ?>.

Per l'indentazione non usare tab ma usare 2 spazi per ogni livello (sia in PHP che in JS che in CSS). I file non devono inoltre contenere whitespace alla fine delle righe e utilizzano line ending Unix \n .

Gli array multilinea terminano con una trailing comma.

I blocchi richiedono sempre le parentesi graffe.

Usare elseif invece di else if.

I nomi delle classi usano UpperCamelCase, metodi, proprietà e variabili utilizzano lowerCamelCase, le costanti sono in UPPER_CASE.

Il DocBlock deve spiegare il significato dell'elemento e, quando necessario, la struttura del dato.

Strumenti automatici

PHPCS

Nella root del progetto creare il file phpcs.xml.dist:

<?xml version="1.0"?> 
<ruleset name="Project"> 
    <description> 
    Coding standards for the Drupal project. 
    </description> 
    
    <file>web/modules/custom</file> 
    
    <arg name="extensions" 
        value="php,module,inc,install,yml"/> 
        
    <rule ref="Drupal"/> 
    <rule ref="DrupalPractice"/> 
</ruleset>

Poi eseguire vendor/bin/phpcs

PHPCBF

PHPStan

Installare con Composer:

composer require --dev \ 
  phpstan/phpstan \ 
  phpstan/extension-installer \ 
  mglaman/phpstan-drupal \ 
  phpstan/phpstan-deprecation-rules

Nella root del progetto creare il file phpstan.neon e poi eseguire vendor/bin/phpstan analyse.

ESLint

Stylelint

Modulo Coder

Installare il modulo come dipendenza di sviluppo composer require --dev drupal/coder.

Debugging

Se il modulo core Database Logging è abilitato si possono consultare i log alla pagina /admin/reports/dblog opure con Drush:

drush watchdog:show \ 
  --severity-min=Warning \ 
  --count=20

oppure

drush watchdog:show \ 
  --type=php \ 
  --extended

In locale si può impostare il livello di verbosità dei log alla pagina /admin/config/development/logging, oppure tramite Drush:

drush config:set \ 
  system.logging \ 
  error_level \ 
  verbose \ 
  -y

Oppure in sites/default/settings.local.php:

$config['system.logging']['error_level'] = 'verbose';

Modulo Devel

Installare con Composer composer require --dev drupal/devel.

XDebug

Status Report

Nella pagina /admin/reports/status è possibile visualizzare informazioni come su eventuali problemi correnti.