Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.www.php > #22342 > unrolled thread

notifica per proprietà non definita

Started byalex <1j9448a02@lnx159sneakemail.com.invalid>
First post2018-11-19 10:31 +0100
Last post2018-11-20 16:50 -0800
Articles 10 — 4 participants

Back to article view | Back to it.comp.www.php


Contents

  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

#22342 — notifica per proprietà non definita

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2018-11-19 10:31 +0100
Subjectnotifica 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]


#22343

FromAlessandro Pellizzari <shuriken@amiran.it>
Date2018-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]


#22344

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2018-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]


#22345

Fromg4b0 <g4b0@nospam.com>
Date2018-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]


#22347

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2018-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]


#22348

Fromg4b0 <g4b0@nospam.com>
Date2018-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]


#22349

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2018-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]


#22350

Fromg4b0 <g4b0@nospam.com>
Date2018-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]


#22356

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2018-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]


#22351

Fromfmassei@gmail.com
Date2018-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