Supporto volontario e collaborativo per Joomla!® in italiano

Sviluppo Moduli Joomla 4

Un percorso per imparare a sviluppare Moduli per Joomla 4.x

2. Aggiungere una classe helper ad un modulo con i namespace

Requisiti

Per seguire questo tutorial è necessario avere a disposizione Joomla! 4.x (attualmente versione Alpha 8).

Namespace

I namespace sono stato introdotti in PHP 5.3. Utilizzati da molto tempo in altri linguaggi di programmazione, queste piccole strutture aiutano a migliorare la chiarezza del codice.

I namespace sono aree separate nelle quali alcune cose logiche (nel nostro caso, classi, interfacce, funzioni e costanti) possono vivere. Queste aree forniscono incapsulazione del codice e prevengono conflitti nei nomi.

Vediamo come usare i namespace in Joomla 4. Utilizzeremo il file helper per questo scopo.

Struttura dei file

Creeremo/Modificheremo i seguenti file:

  • Helper/FooHelper.php - Questo è il file che utilizzeremo come esempio. È necessario crearlo.
  • mod_foo.php - In questo file sarà necessario caricare il namespace.
  • tmpl/default.php - In questo file dimostreremo come è possibile visualizzare i dati di un helper.
  • mod_foo.xml - Creeremo una nuova cartella con un nuovo file. Ciò dovrà essere fatto durante l'installazione, pertanto dovremo specificarlo in questo file.

Creare Helper/FooHelper.php

La nostra nuova classe helper dovrebbe appartenere ad un namespace. Otteniamo questo con il codice seguente. È importante che questa riga sia all'inizio del file.

namespace Joomla\Module\Foo\Site\Helper;

Quindi creiamo una semplice classe con un semplice metodo. Ovviamente è possibile fare molto di più qui. Molti esempi sono visibili nei metodi del core di Joomla.

Il file Helper/FooHelper.php completo

Il codice per il file Helper/FooHelper.php sarà simile a questo:

mod foo helper

Modifica del file mod_foo.php

La nostra nuova classe helper è importata allo scope corrente all'inzio del file.

use Joomla\Module\Foo\Site\Helper\FooHelper;

Infine utilizza il file helper per verificare che sia caricata correttamente.

$test = FooHelper::getText($params, $app);

Il file mod_foo.php completo

Il codice per il file mod_foo.php sarà simile a questo:

mod foo php 2

Modifica del file tmpl/default.php

In questo file è necessaria solo una piccola modifica per dimostrare nel frontend che il file di helper stia funzionando correttamente. Aggiungiamo il valore della variabile alla fine dell'output corrente.

mod foo tmpl 01

Il file tmpl/default.php completo

Il codice per il file tmpl/default.php sarà simile a questo:

mod foo tmpl 02

Modifica del file mod_foo.xml

Innanzitutto è necessario aggiungere una riga, così che il namespace sia impostato automaticamente in Joomla. Dopo questa modifica, è necessario reinstallre il modulo. Una semplice modifica in un modulo già installato non è sufficiente. Se si sta sviluppando in locale è possibile anche eliminare il file libraries/autoload_psr4.php che sarà automaticamente creato nuovamente. Dopo l'inserimento e l'installazione, il namespace sarà riconosciuto dal loader JPATH_LIBRARIES . '/autoload_psr4.php'.

mod foo namespace

 Joomla dovrebbe copiare il file di helper nel corso dell'installazione del modulo. Quindi Joomla ha bisogno di conoscere il file helper, pertanto è necessario aggiungere la seguente riga al file XML.

mod foo xml 2

Il file mod_foo.xml completo

Il codice per il file mod_foo.xml sarà simile a questo:

mod foo xml 2f

Test del Modulo

Adesso è possibile comprimere tutti i file in un unico file zip ed installarlo attraverso Gestione Estensioni dal backend di Joomla.

Nel frontend sarà visibile il modulo visualizzato come nell'immagine seguente. Sarà visualizzato il testo proveniente anche dal file helper.

1050px Moduletutorial23 en

Conclusione

Come si può vedere, una volta che ci si addentra nei namespace, non sono così complicati. In grandi progetti possono portare notevoli beneifici. Tuttavia è consigliabile pianificare in anticipo i namespace, poiché potrebbero altrimenti risultare molto esigenti in termini di tempo.

I moduli di esempio per questo tutorial possono essere trovati qui.