@giovi
Beh, non sapevo che fosse una discussione così datata (2006 come dici tu).
Comunque la mia esigenza nasce da un bisogno concreto che non trova una
soddisfazione completa e professionale nell'utilizzo della funzione JInput.
Infatti non riesco mai a risolvere definitivamente il problema di questo stramaledetto
"0" della cippa (usando JInput per inciso, ovviamente con le mie funzioni custom ci riesco).
Allora la mia domanda provocatoria (in senso buono) è, come mai sono costretto,
nonostante la potenza del CMS Joomla!, a scrivermi (ancora nel 2015) una funzione
di filtro custom ? E pergiunta per risolvere dei semplici numeri INTEGER ?!
(La questione è un errore concettuale di fondo di JInput)
Come già detto in precedenza , io sto già usando un mio metodo, però nel mio "malsano"
desiderio di voler usare le funzioni native Joomla! preposte a tale scopo, non posso far
altro che riscontrarne un'imperfezione (secondo la mia opinione).
E la cosa nasce da un'ambiguità, e cioè dal fatto che non è possibile sapere se lo "0" sia
l'input effettivo dell'utente oppure se derivi dal filtro (e quindi un valore da rigettare).
Allora giunto a questo punto, lo "0" è davvero da considerarsi un valore riservato. E' riservato perché i programmatore joomla (che per inciso ritengo siano molto bravi)
hanno pensato (intelligentemente e furbamente) di rendere tale risultato direttamente
sottoponibile allo statement "if".
E con ciò mi voglio riagganciare a quello che ha detto steganoga:
beh... 0 in effetti è un numero e non necessariamente è False
anche secondo me potrebbe essere comunque migliorata, 0 è 0 e false è false.
E' un po' la stessa cosa per cui è conveniente usare === invece di ==
In sostanza io e lui diciamo la stessa cosa, però io propongo la soluzione con null e lui
preferirebbe andare ad agire sul tipo, "false" booleano piuttosto che "0" come numero.
Così infatti verrà DEFINITIVAMENTE ELIMINATA L'AMBIGUITA' :
$mio_valore_ritornato_da_jinput = Jinput->...
if( $mio_valore_ritornato_da_jinput === false ) { return false; }
E' devo dire che mi piace più la soluzione proposta da steganoga ripetto alla mia (con il null).
@giovi, tu dici:
comprendo in pieno la tua necessità ma la funzione si comporta esattamente nel
modo che ci si aspetta: se il valore di ritorno atteso è un intero, non puoi aspettarti che uno
0 in caso di fallimento
Io non sono d'accordo, perché si comporta esattamente come ci si aspetta ?Per esempio, anche dalla funzione "strpos" ci si aspetta che restituisca un intero,
però solo nel caso che il risultato sia coerente, guardacaso lanciando la seguente linea di codice:
strpos("aaba", "c");
si ottiene un bellissimo "false" (booleano!) e non uno "0" stringa oppure uno 0 integer.
Probabilmente il tipo booleano è stato pensato/creato/ideato proprio od anche
per risolvere queste ambiguità.
Qui occorre prendere razionalmente atto di una cosa, la soluzione adottata finora
dai programmatori di Joomla è una soluzione imperfetta perché è ambigua, dall'esempio
sopra mi da ragione anche il PHP.
C'è di fondo un vero e proprio errore concettuale.
Io penso che questa cosa i programmatori del team di Joomla! lo sappiano bene,
è solo un annoso problema che ancora però non ha trovato una soluzione completamente
soddisfacente.
Io non sono molto pratico con la segnalazione di errori, e nel caso questo è un errore
concettuale e non un bug del codice.
Però la cosa dovrebbe essere segnalata di nuovo per risolvere definitivamente il problema,
poi che la cosa avvenga in Joomla v4 o v5 amen! Visto e considerato che questo è Open Source.
Un saluto
J