giovedì 23 agosto 2012

Call-time pass-by-reference is deprecated

Deprecated: Call-time pass-by-reference has been deprecated in filename.php

A partire dalla versione 5.3.0 di PHP è stato deprecato il passaggio per riferimento quando si chiama un metodo o una funzione.
l'utilizzo dell'operatore & nelle chiamate dei vostri metodi - esempio: metodo(&$a) - genera il messaggio di warning mostrato all'inizio.
In PHP 5 infatti gli oggetti vengono sempre passati per reference (per riferimento) e quindi in questo caso l'operatore & non serve. Per i tipi di dati primitivi basta indicarlo nella definizione del metodo.
Ricordo infatti che dalla versione 5.3.0 di PHP è stato deprecato il passaggio per riferimento nella chiamata di un metodo ma non certo il passaggio per riferimento. Vediamo un esempio:

function functionA(&$var) { 
    $var++; 

functionB($var) {
    $var++; 

$n = 1;

// corretto 
functionA($n); 

// deprecated 
// functionB(&$n);

echo $n; // output 2 

In entrambi i casi si vuole che la variabile $n venga incrementata dal metodo ma il secondo modo (commentato per non far attivare il warning) è scorretto.
Se stai utilizzando codice di terze parti ti può capitare che venga ancora utilizzato il passaggio per riferimento a tempo di chiamata. Per far funzionare la tua applicazione puoi intervenire sul php.ini attraverso la seguente direttiva

allow_call_time_pass_reference = on

Questa però deve essere presa come una soluzione temporanea in attesa della versione corretta.
giovedì 9 agosto 2012

Le Costanti di Joomla

Le costanti che Joomla ci mette a disposizione possono risultare molto utili quando scriviamo i nostri componenti
Di seguito riporto un elenco non esaustivo delle costanti che possiamo utilizzare nelle nostre estensioni di Joomla.


 Costanti legate al percorso

  • DS: il separatore di directory (/), garantisce la portabilità tra sistemi operativi diversi. Come ben sapete Windows utilizza il carattere \ a differenza di linux /
  • JPATH_ADMINISTRATOR: il percorso base dell’applicazione JAdministrator (/joomla/administrator) 
  • JPATH_BASE: il percorso base dell'applicazione corrente: assume valori diversi a seconda dell’applicazione in uso (JSite, JAdministrator, JInstallation o altre personalizzate) 
  • JPATH_COMPONENT: il percorso verso la directory del componente in uso (/joomla/components/com_in_uso) 
  • JPATH_COMPONENT_ADMINISTRATOR: il percorso verso la directory lato admin del componente in uso (/joomla/administrator/components/com_in_uso) 
  • JPATH_COMPONENT_SITE: il percorso verso la directory lato sito del componente in uso (/joomla/components/com_in_uso) 
  • JPATH_CONFIGURATION: il percorso della directory che contiene il file di configurazione (/joomla) 
  • JPATH_INSTALLATION: il percorso della applicazione di installazione JInstallation (/joomla/installation) 
  • JPATH_CACHE: il percorso della directory cache (/joomla/cache) 
  • JPATH_LIBRARIES: il percorso della cartella libraries (/joomla/libraries) 
  • JPATH_PLUGINS: il percorso della cartella plugins (/joomla/plugins) 
  • JPATH_ROOT: il percorso principale del framework Joomla (/joomla) 
  • JPATH_SITE: il percorso base dell'applicazione JSite (/joomla) 
  • JPATH_THEMES: il percorso della cartella templates (/joomla/templates)


 Costanti legate alla data

  • DATE_FORMAT_LC: mostra la data nella forma Giovedì, 09 Agosto 2012 
  • DATE_FORMAT_LC2: mostra la data e l’ora nella forma Giovedì, 09 Agosto 2012 10:00
  • DATE_FORMAT_LC3: mostra la data nella forma 09 Agosto 2012
  • DATE_FORMAT_LC4: mostra la data nella forma 09:08:12

Il mio consiglio è di utilizzare nelle operazioni di include e require le costanti messe a disposizione dal framework di Joomla in modo da garantire la corretta portabilità dei vostri componenti.