Vai al contenuto

PHBjson

PHBjson è una classe scritta tramite il linguaggio PHP per poter gestire agevolmente oggetti codificati in JSON.

PHP offre la possibilità di gestire gli oggetti codificati in questo modo attraverso le funzioni json_encode() e json_decode(), ciò nonostante la gestione di oggetti che possino avere una struttura dinamica nel tempo e con attributi opzionali possono creare non pochi problemi, PHBjson viene utilizzato come tramite per poter gestire agevolmente questi oggetti.

Perchè usare PHBjson?

Questa classe non introduce nulla di nuovo, ma crea un livello di astrazione aggiuntivo da quello che è il concetto del JSON.

Un qualsiasi oggetto codificato attraverso il JSON diventa una stringa, all’interno della quale vengono memorizzati i contenuti dell’oggetto, decodificando la stringa si ottiene l’oggetto di partenza, tutto il processo può dare vita a numerosi errori se la struttura dell’oggetto non è definita a priori o se l’entità codificata è un contenitore di oggetti.

PHBjson permette di ignorare alcuni particolare dell’entità codificata, potendo manipolare e/o accedere ai contenuti senza troppe preoccupazioni, infatti, la classe mettere a diposizione funzioni e metodi d’accesso per poter accedere come classe o array e la possibilità di accedere agli attributi (anche su più livelli) potendoli leggere/modificare/cancellare .

Documentazione

Di seguito la documentazione della classe PHBjson.

isValidValue()

Verifica che l’attributo cercato sia valido (esista nell’oggetto)

Parametri

Ritorna

TRUE se l’attributo con nome $field esiste nell’oggetto, FALSE altrimenti

$foo_obj = new stdClass();
$foo_obj->my_attr = 'my_value';  

$foo_json = json_encode($foo_obj);
$my_phbjson = new PHBjson($foo_json);

$my_phbjson->isValidValue('my_attr');
// returns TRUE
$my_phbjson->isValidValue('my_notvalid_attr');
// returns FALSE

setValue($field, $value)

mposta a $value l’attribute con chiave $field (inizializza o sovrascrive)

Parametri

  • $field Mixed – Il nome dell’attributo di cui si vuole impostare il valore
  • $value Mixed – Il valore

Ritorna

Funzione senza valore di ritorno

$foo_obj = new stdClass();

$foo_json = json_encode($foo_obj);
$my_phbjson = new PHBjson($foo_json);

$my_phbjson->getValue('my_attr');
// returns NULL
$my_phbjson->setValue('my_attr', 123);
// returns NULL
$my_phbjson->getValue('my_attr');
// returns 123

getValue($field)

Retituisce il valore dell’attribute con chiave $field

Parametri

  • $field Mixed – Il nome dell’attributo di cui si vuole ottenere il valore

Ritorna

Il valore dell’attributo o un nuovo oggetto PHBjson se il valore non è un tipo di dato primitivo (intero, stringa, booleano ..), NULL se l’attributo richiesto non esiste.

$foo_obj = new stdClass();
$foo_obj->my_attr = 'my_value';  
$foo_obj_child = new stdClass();
$foo_obj_child->my_child_attr = 'my_child_attr';
$foo_obj->child = $foo_obj_child;

$foo_json = json_encode($foo_obj);
$my_phbjson = new PHBjson($foo_json);

$my_phbjson->getValue('my_attr');
// returns 'my_value'
$my_phbjson->getValue('my_notvalid_attr');
// returns NULL
$my_phbjson->getValue('child');
// returns a new PHBjson object referring 'child'
$my_phbjson->getValue('child')->getValue('my_child_attr');
// returns 'my_child_value'

deleteValue($field, $value)

  • $field Mixed – Il nome dell’attributo di cui si vuole verificare

Rimuove l’attributo con chiave $field

Parametri

  • $field Mixed – Il nome dell’attributo da eliminare

Ritorna

Funzione senza valore di ritorno.

$foo_obj = new stdClass();

$foo_json = json_encode($foo_obj);
$my_phbjson = new PHBjson($foo_json);
$my_phbjson->setValue('my_attr', 123);
// returns NULL
$my_phbjson->getValue('my_attr');
// returns 123
$my_phbjson->deleteValue('my_attr');
$my_phbjson->getValue('my_attr');
// returns NULL

toObj()

Ritorna l’oggetto contenuto da PHBjson

Parametri

Ritorna

L’oggetto reale incapsulato nella classa PHBjson

$foo_obj = new stdClass();
$foo_obj->o_attr = 'o_value';
$foo_json = json_encode($foo_obj);
$my_phbjson = new PHBjson($foo_json);

$my_phbjson->setValue('my_attr', 123);

$my_phbjson->toObj();
// returns an object
// {
//      o_attr  -> 'o_value'
//      my_attr -> 123
//}

toJSON()

Ritorna l’oggetto condificato in JSON contenuto da PHBjson

Parametri

Ritorna

L’oggetto codificato in JSON reale incapsulato nella classa PHBjson

$foo_obj = new stdClass();
$foo_obj->o_attr = 'o_value';
$foo_json = json_encode($foo_obj);
$my_phbjson = new PHBjson($foo_json);

$my_phbjson->setValue('my_attr', 123);

$my_phbjson->toJSON();
// returns a JSON object (string)
// "{'o_attr':'o_value', 'my_attr' : 123 }"

updateStruct()

Effettua la fusione tra il parametro fornito e l’ggetto contenuto da PHBjson

Parametri

  • $data Array,Oggetto – L’oggetto o array da unire

Ritorna

Funzione senza valore di ritorno

$foo_obj = new stdClass();
$foo_obj->my_attr = 'my_value';  

$foo_json = json_encode($foo_obj);
$my_phbjson = new PHBjson($foo_json);

$foo_obj1 = new stdClass();
$foo_obj1->my_attr1 = 'my_value1';

$my_phbjson->updateStruct($foo_obj1);
$my_phbjson->toObj();
// returns an object
// {
//      my_attr1  -> 'my_value1'
//      my_attr   -> 'my_value'
//}

Accesso come Array

La classe PHBjson implementa l’interfaccio ArrayAccess.

Un oggetto di classe PHBjson offre la possibilità di accedere e manipolare gli attributi attraverso i metodi d’accesso messi a disposizione dagli array

$foo_obj = new stdClass();
$foo_obj->my_attr = 'my_value';  

$foo_json = json_encode($foo_obj);
$my_phbjson = new PHBjson($foo_json);

$my_phbjson['my_attr']
// returns 'my_value'

$my_phbjson['my_attr'] = 'my_new_value';
$my_phbjson['my_attr']
// returns 'my_new_value'

isset($my_phbjson['my_attr'])
// returns TRUE
isset($my_phbjson['not_my_attr'])
// returns FALSE

unset($my_phbjson['my_attr'])
isset($my_phbjson['my_attr'])
// returns FALSE

Iterare nell’oggetto

La classe PHBjson implementa l’interfaccio Iterator.

Gli elementi di un oggetto di classe PHBjson possono essere scorsi attraverso i cicli di PHP.

$foo_obj = new stdClass();
$foo_obj->my_attr1 = 'my_value4'; 
$foo_obj->my_attr2 = 'my_value3';  
$foo_obj->my_attr3 = 'my_value2';  
$foo_obj->my_attr4 = 'my_value1';  
 

$foo_json = json_encode($foo_obj);
$my_phbjson = new PHBjson($foo_json);

foreach( $my_phbjson as $key => $value){
    echo ($key ." =>". $value);
}
// returns
// "my_attr1 => my_value4"
// "my_attr2 => my_value3"
// "my_attr3 => my_value2"
// "my_attr4 => my_value1"
//

Contare gli attributi

La classe PHBjson implementa l’interfaccio Countable.

Un oggetto di classe PHBjson permette di contare gli attributi.

$foo_obj = new stdClass();
$foo_obj->my_attr1 = 'my_value4'; 
$foo_obj->my_attr2 = 'my_value3';  
$foo_obj->my_attr3 = 'my_value2';  
$foo_obj->my_attr4 = 'my_value1';  
 
$foo_json = json_encode($foo_obj);
$my_phbjson = new PHBjson($foo_json);

count( $my_phbjson );
// returns 4

unset( $my_phbjson['my_attr4']);
count( $my_phbjson );
// returns 3

Download

Il plugin viene sviluppato è mantenuto su GitHub.