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


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

estrarre proprieta dinamiche (non dichiarate) da una classe

Started byalex <1j9448a02@lnx159sneakemail.com.invalid>
First post2018-11-23 10:29 +0100
Last post2018-11-24 12:58 +0100
Articles 3 — 2 participants

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


Contents

  estrarre proprieta dinamiche (non dichiarate) da una classe alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-11-23 10:29 +0100
    Re: estrarre proprieta dinamiche (non dichiarate) da una classe Alessandro Pellizzari <shuriken@amiran.it> - 2018-11-24 09:05 +0000
      Re: estrarre proprieta dinamiche (non dichiarate) da una classe alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-11-24 12:58 +0100

#22358 — estrarre proprieta dinamiche (non dichiarate) da una classe

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2018-11-23 10:29 +0100
Subjectestrarre proprieta dinamiche (non dichiarate) da una classe
Message-ID<pt8haf$to9$1@gioia.aioe.org>
$ cat test.php
<?php
class Abc {
     public $a;
     public $b;
}

$c = new Abc;
$c->a = 1;
$c->b = 2;
$c->c = 3;// non dichiarata (assegnazione dinamica)

$refl = new ReflectionClass($c);
print_r($refl->getProperties());


$ php test.php
Array
(
     [0] => ReflectionProperty Object
         (
             [name] => a
             [class] => Abc
         )

     [1] => ReflectionProperty Object
         (
             [name] => b
             [class] => Abc
         )

)


Come vedete la proprietà *c* non compare perchè non è dichiarata 
esplicitamente (è stata solo assegnata dinamicamente).
C'è un modo per estrarre le proprietà dinamiche?

[toc] | [next] | [standalone]


#22359

FromAlessandro Pellizzari <shuriken@amiran.it>
Date2018-11-24 09:05 +0000
Message-ID<g5siidFlg5vU1@mid.individual.net>
In reply to#22358
On 23/11/2018 09:29, alex wrote:

> $ cat test.php
> <?php
> class Abc {
>      public $a;
>      public $b;
> }
> 
> $c = new Abc;
> $c->a = 1;
> $c->b = 2;
> $c->c = 3;// non dichiarata (assegnazione dinamica)
> 
> $refl = new ReflectionClass($c);

> Come vedete la proprietà *c* non compare perchè non è dichiarata 
> esplicitamente (è stata solo assegnata dinamicamente).
> C'è un modo per estrarre le proprietà dinamiche?

ReflectionClass fa la reflection della class, mentre `c` è una proprietà
dell'oggetto, non della classe.

Non credo ci sia un modo per avere le proprietà non dichiarate, ma se
non sbaglio foreach ti permette di ottenere tutte le proprietà, quindi
ti basta mettere il risultato di getProperties in un array, costruirne
un altro con foreach e fare la differenza (o usare array_filter)

Bye.

[toc] | [prev] | [next] | [standalone]


#22361

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2018-11-24 12:58 +0100
Message-ID<ptben2$1m44$1@gioia.aioe.org>
In reply to#22359
Il 24/11/2018 10:05, Alessandro Pellizzari ha scritto:
> ReflectionClass fa la reflection della class, mentre `c` è una proprietà
> dell'oggetto, non della classe.

OK

> Non credo ci sia un modo per avere le proprietà non dichiarate, ma se
> non sbaglio foreach ti permette di ottenere tutte le proprietà, quindi
> ti basta mettere il risultato di getProperties in un array, costruirne
> un altro con foreach e fare la differenza (o usare array_filter)

???

[toc] | [prev] | [standalone]


Back to top | Article view | it.comp.www.php


csiph-web