Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.www.php > #22342 > unrolled thread
| Started by | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| First post | 2018-11-19 10:31 +0100 |
| Last post | 2018-11-20 16:50 -0800 |
| Articles | 10 — 4 participants |
Back to article view | Back to it.comp.www.php
notifica per proprietà non definita alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-11-19 10:31 +0100
Re: notifica per proprietà non definita Alessandro Pellizzari <shuriken@amiran.it> - 2018-11-19 10:41 +0000
Re: notifica per proprietà non definita alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-11-19 14:33 +0100
Re: notifica per proprietà non definita g4b0 <g4b0@nospam.com> - 2018-11-19 13:37 +0000
Re: notifica per proprietà non definita alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-11-19 15:15 +0100
Re: notifica per proprietà non definita g4b0 <g4b0@nospam.com> - 2018-11-19 16:24 +0000
Re: notifica per proprietà non definita alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-11-20 12:51 +0100
Re: notifica per proprietà non definita g4b0 <g4b0@nospam.com> - 2018-11-20 13:10 +0000
Re: notifica per proprietà non definita alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-11-21 13:04 +0100
Re: notifica per proprietà non definita fmassei@gmail.com - 2018-11-20 16:50 -0800
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2018-11-19 10:31 +0100 |
| Subject | notifica per proprietà non definita |
| Message-ID | <pstvu4$1ca1$1@gioia.aioe.org> |
class a {
//public $b;
}
$a = new a;
$a->b = 2;
La proprietà *b* non è definita ma non viene generata nessuna notifica.
C'è un modo per avere un comportamento più strict?
Siamo arrivate a php7.2, ma con le solite lacune...
[toc] | [next] | [standalone]
| From | Alessandro Pellizzari <shuriken@amiran.it> |
|---|---|
| Date | 2018-11-19 10:41 +0000 |
| Message-ID | <g5fibrFpc0aU1@mid.individual.net> |
| In reply to | #22342 |
On 19/11/2018 09:31, alex wrote:
> class a {
> //public $b;
> }
>
> $a = new a;
> $a->b = 2;
>
> La proprietà *b* non è definita ma non viene generata nessuna notifica.
> C'è un modo per avere un comportamento più strict?
No.
> Siamo arrivate a php7.2, ma con le solite lacune...
Non è una lacuna, ma una caratteristica del linguaggio.
Molto utile, tra l'altro, quando devi codificare o decodificare JSON,
visto che JS ha lo stesso comportamento (di aggiungere roba a un Object
dinamicamente).
Tra l'altro non ci sono controindicazioni:
- se nessun metodo della classe usa la variabile, puoi metterci il
valore che vuoi e viene ignorato
- se in altre parti del tuo software usi la variabile, non avrai errori
Praticamente tutti gli IDE te lo segnalano come warning, comunque,
quindi se proprio vuoi il codice pulito, usa un IDE. :P
Bye.
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2018-11-19 14:33 +0100 |
| Message-ID | <psue3k$6i7$1@gioia.aioe.org> |
| In reply to | #22343 |
Il 19/11/18 11:41, Alessandro Pellizzari ha scritto:
>
>> Siamo arrivate a php7.2, ma con le solite lacune...
>
> Non è una lacuna, ma una caratteristica del linguaggio.
Da rivedere.
dyinamic class ABC {}
Almeno facciamo decidere al programmatore.
> Molto utile, tra l'altro, quando devi codificare o decodificare JSON,
> visto che JS ha lo stesso comportamento (di aggiungere roba a un Object
> dinamicamente).
>
Forse altri linguaggi gestiscono json, e forse lo fanno in modo più
rigoroso.
> Tra l'altro non ci sono controindicazioni:
class a {
public $_b;
}
$a = new a;
$a->b = 2;
var_dump($a->b);// NULL
Magari per qualcuno potrebbe andar bene :D
> - se nessun metodo della classe usa la variabile, puoi metterci il
> valore che vuoi e viene ignorato
E questa cosa a che serve?
> - se in altre parti del tuo software usi la variabile, non avrai errori
Si, classe passepartout, multiuso, potrebbe fungere anche da attaccapanni :D
> Praticamente tutti gli IDE te lo segnalano come warning, comunque,
> quindi se proprio vuoi il codice pulito, usa un IDE. :P
>
> Bye.
IDE e surplus vari, in quantità: molto belli, comodi e invitanti :D
A parte gli scherzi, sono strumenti molto utili, ma certe cose non penso
sia il caso di affidarli all'IDE.
[toc] | [prev] | [next] | [standalone]
| From | g4b0 <g4b0@nospam.com> |
|---|---|
| Date | 2018-11-19 13:37 +0000 |
| Message-ID | <psueal$6iq$1@gioia.aioe.org> |
| In reply to | #22344 |
Il Mon, 19 Nov 2018 14:33:41 +0100, alex ha scritto: > IDE e surplus vari, in quantità: molto belli, comodi e invitanti :D A > parte gli scherzi, sono strumenti molto utili, ma certe cose non penso > sia il caso di affidarli all'IDE. Sei uno di quelli che usano ancora vi per sviluppare? g4b0
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2018-11-19 15:15 +0100 |
| Message-ID | <psugi8$av2$1@gioia.aioe.org> |
| In reply to | #22345 |
Il 19/11/18 14:37, g4b0 ha scritto: > Il Mon, 19 Nov 2018 14:33:41 +0100, alex ha scritto: > >> IDE e surplus vari, in quantità: molto belli, comodi e invitanti :D A >> parte gli scherzi, sono strumenti molto utili, ma certe cose non penso >> sia il caso di affidarli all'IDE. > > Sei uno di quelli che usano ancora vi per sviluppare? > > g4b0 > NO, ma certe cose ritengo che vadano gestite internamente IHMO. Poi se l'IDE vuole dare una mando che ben venga. $ php -r 'echo $x;' PHP Notice: Undefined variable: x in Command line code on line 1 Ma non era caso che l'interprete si scomodasse per generare la notice, tanto c'è l'IDE :D IHMO
[toc] | [prev] | [next] | [standalone]
| From | g4b0 <g4b0@nospam.com> |
|---|---|
| Date | 2018-11-19 16:24 +0000 |
| Message-ID | <psuo4i$o5b$1@gioia.aioe.org> |
| In reply to | #22347 |
Il Mon, 19 Nov 2018 15:15:37 +0100, alex ha scritto: > $ php -r 'echo $x;' > PHP Notice: Undefined variable: x in Command line code on line 1 > > Ma non era caso che l'interprete si scomodasse per generare la notice, > tanto c'è l'IDE :D Sono due cose diverse. L'interprete solleva la Notice a runtime, mentre l'IDE ti notifica un warning mentre sviluppi. Per esempio Netbeans in questo caso mi evidenzia la riga che contiene 'echo $x', mi mette un bel ! dentro ad un triangolo giallo, e mi dice: "$x seems to be uninitialized". Io lo trovo comodo, mi accorgo dei problemi prima ancora di far girare lo script, ed in caso di long running script mi salva parecchio tempo. Per esempio sto lavorando ad una migrazione ed ho uno script che porta i dati da un db ad un altro, completamente rivisto. Tempo di esecuzione ~60 minuti. Preferisco accorgermi del problema prima di lanciare lo script! Altra chicca di NB, ma credo che anche che gli altri IDE si possa fare, è che i warning sono configurabili a piacimento, anche se il default normalmente è più che sufficiente. g4b0
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2018-11-20 12:51 +0100 |
| Message-ID | <pt0sgt$3d3$1@gioia.aioe.org> |
| In reply to | #22348 |
Il 19/11/18 17:24, g4b0 ha scritto: > Il Mon, 19 Nov 2018 15:15:37 +0100, alex ha scritto: > >> $ php -r 'echo $x;' >> PHP Notice: Undefined variable: x in Command line code on line 1 >> >> Ma non era caso che l'interprete si scomodasse per generare la notice, >> tanto c'è l'IDE :D > > Sono due cose diverse. L'interprete solleva la Notice a runtime, mentre > l'IDE ti notifica un warning mentre sviluppi. Appunto, questo sarebbe il comportamento corretto, anche per le proprietà. > Altra chicca di NB, ma credo che anche che gli altri IDE si possa fare, è > che i warning sono configurabili a piacimento, anche se il default > normalmente è più che sufficiente. Ma non è ancora rimasto a php 5?
[toc] | [prev] | [next] | [standalone]
| From | g4b0 <g4b0@nospam.com> |
|---|---|
| Date | 2018-11-20 13:10 +0000 |
| Message-ID | <pt1151$ao8$2@gioia.aioe.org> |
| In reply to | #22349 |
Il Tue, 20 Nov 2018 12:51:58 +0100, alex ha scritto: > Il 19/11/18 17:24, g4b0 ha scritto: >> Il Mon, 19 Nov 2018 15:15:37 +0100, alex ha scritto: >> >>> $ php -r 'echo $x;' >>> PHP Notice: Undefined variable: x in Command line code on line 1 >>> >>> Ma non era caso che l'interprete si scomodasse per generare la notice, >>> tanto c'è l'IDE :D >> >> Sono due cose diverse. L'interprete solleva la Notice a runtime, mentre >> l'IDE ti notifica un warning mentre sviluppi. > > Appunto, questo sarebbe il comportamento corretto, anche per le > proprietà. Punti di vista. In effetti potrebbe essere vista come un incongruenza del linguaggio, seppur comoda. Mi aspetterei un comportamento uniforme tra variabili e proprietà degli oggetti. Come diceva Alessandro è peraltro una feauture molto comoda quando si lavora con JSON o più in generale con DB non relazionali, però a questo punto mi chiedo il perchè del warning nel caso di variabili. Andando a memoria con php 5 si poteva usare una variabile non dichiarata, o ricordo male? > >> Altra chicca di NB, ma credo che anche che gli altri IDE si possa fare, >> è che i warning sono configurabili a piacimento, anche se il default >> normalmente è più che sufficiente. > > Ma non è ancora rimasto a php 5? No, la versione 8.2 è "aggiornata" a php 7.0. Poi c'è stato il periodo di transazione verso la apache foudation, per cui la versione 9 non prevedeva il supporto di PHP, ora dovrebbe uscire la 10 con il supporto. Spero che il supporto sia modulare, in modo da viaggiare separato dallo sviluppo di NB, in modo tale da riuscire a star dietro alle versioni. g4b0
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2018-11-21 13:04 +0100 |
| Message-ID | <pt3hjp$pdl$1@gioia.aioe.org> |
| In reply to | #22350 |
Il 20/11/18 14:10, g4b0 ha scritto: >>> Sono due cose diverse. L'interprete solleva la Notice a runtime, mentre >>> l'IDE ti notifica un warning mentre sviluppi. >> >> Appunto, questo sarebbe il comportamento corretto, anche per le >> proprietà. > > Punti di vista. In effetti potrebbe essere vista come un incongruenza del > linguaggio, seppur comoda. Mi aspetterei un comportamento uniforme tra > variabili e proprietà degli oggetti. A questo punto l'interprete dovrebbe tacere anche su altre cose: MyClass::abc(); Se il metodo abc esiste bene, sennò tanto meglio. E quando il nulla comparirà davanti ai tuoi occhi non devi chiederti il perchè (in nome della comodità) :P > Come diceva Alessandro è peraltro una feauture molto comoda quando si > lavora con JSON o più in generale con DB non relazionali, però a questo > punto mi chiedo il perchè del warning nel caso di variabili. Andando a > memoria con php 5 si poteva usare una variabile non dichiarata, o ricordo > male? Ricordi male, per fortuna :D
[toc] | [prev] | [next] | [standalone]
| From | fmassei@gmail.com |
|---|---|
| Date | 2018-11-20 16:50 -0800 |
| Message-ID | <b3beace4-94e0-457d-86f7-c75cabba2dc2@googlegroups.com> |
| In reply to | #22344 |
On Monday, November 19, 2018 at 8:33:42 AM UTC-5, alex wrote:
> Il 19/11/18 11:41, Alessandro Pellizzari ha scritto:
> >
> >> Siamo arrivate a php7.2, ma con le solite lacune...
> >
> > Non è una lacuna, ma una caratteristica del linguaggio.
>
> Da rivedere.
>
LOL
Ci si son messi 40 anni per rendersi conto che le definizioni dei membri
sono ridondanti, ora arrivi te e dici che è una stupidaggine.
> dyinamic class ABC {}
*dynamic*, semmai
>
> Almeno facciamo decidere al programmatore.
>
E sempre semmai si facesse sarebbe il contrario, dovresti dichiarare la
classe "fixed" o "strict", o quel che è. Sempre non fosse inutile.
> > Molto utile, tra l'altro, quando devi codificare o decodificare JSON,
> > visto che JS ha lo stesso comportamento (di aggiungere roba a un Object
> > dinamicamente).
> >
>
> Forse altri linguaggi gestiscono json, e forse lo fanno in modo più
> rigoroso.
>
LOL x2
Guarda, te lo chiederei pure come si fa nei linguaggi più strict a
decodificare una stringa json. Ma già so che non ne conosci nessuno.
> > - se nessun metodo della classe usa la variabile, puoi metterci il
> > valore che vuoi e viene ignorato
>
> E questa cosa a che serve?
>
Retrocompatibilità da design a fronte di aggiornamenti degli input.
> > - se in altre parti del tuo software usi la variabile, non avrai errori
>
> Si, classe passepartout, multiuso, potrebbe fungere anche da attaccapanni :D
>
Eh, e quindi?
> > Praticamente tutti gli IDE te lo segnalano come warning, comunque,
> > quindi se proprio vuoi il codice pulito, usa un IDE. :P
> >
>
> IDE e surplus vari, in quantità: molto belli, comodi e invitanti :D
> A parte gli scherzi, sono strumenti molto utili, ma certe cose non penso
> sia il caso di affidarli all'IDE.
>
Un "IDE" è una collezione di tool separati, lo dice il nome stesso. Anche
se programmi in C (e non mi venire a dire che non è "strict" come linguaggio)
oltre al compilatore fai sempre girare i check statici, gli style check, i
tool di test, come minimo.
Anche qui, arrivi dopo 60 anni e dici che dev'essere tutto prerogativa
del linguaggio e dell'ambiente d'esecuzione.
Mamma mia.
Per non fare 'ste figure, invece di lamentarti, magari chiedi.
Ciao!
[toc] | [prev] | [standalone]
Back to top | Article view | it.comp.www.php
csiph-web