Skip to content

Commit

Permalink
add set/get by path
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexSuperStar committed Nov 10, 2019
1 parent a40bcca commit dffadb8
Show file tree
Hide file tree
Showing 5 changed files with 256 additions and 182 deletions.
187 changes: 98 additions & 89 deletions README.en.md
Original file line number Diff line number Diff line change
@@ -1,89 +1,98 @@
# jsonMaker
Create JSON easy

PHP class for creating and modifying a text string in JSON format
# Installation

```
composer require alexsuperstar/jsonmaker
```

# Creating JSON

```php
$a = new \alexstar\JsonMaker();
$cc='xyz';
$a->{$cc}->bbb->cccc[0]->xxx=5;
$a->{$cc}->zz='qq';
$a->xyz->zf='qq';
$a->xx->zz='qq';
echo $a;
```

Result
```
{"xyz":{"bbb":{"cccc":[{"xxx":5}]},"zz":"qq","zf":"qq"},"xx":{"zz":"qq"}}
```

# Editing JSON

Original JSON
```
{
"firstName": "Иван",
"lastName": "Иванов",
"address": {
"streetAddress": "Московское ш., 101, кв.101",
"city": "Ленинград",
"postalCode": 101101
},
"phoneNumbers": [
"812 123-1234",
"916 123-4567"
]
}
```

PHP code

```php
<?php
$loader = require_once __DIR__ . '/vendor/autoload.php';
$json = new \alexstar\JsonMaker('{"firstName":"Иван","lastName":"Иванов","address":{"streetAddress":"Московское ш., 101, кв.101","city":"Ленинград","postalCode":101101},"phoneNumbers":["812 123-1234","916 123-4567"]}');
$json->firstName='Алексей';
$dom='дом';
$json->address->{$dom}=6;
$json->address->code[]='123';
$json->address->code[]='456';
$json->phoneNumbers[2]='+7(123)1233-45-67';
unset($json->address->city,$json->phoneNumbers[0]);
echo $json;
echo 'code count: ',count($json->address->code);
```

Result

```
{
"firstName": "Алексей",
"lastName": "Иванов",
"address": {
"streetAddress": "Московское ш., 101, кв.101",
"postalCode": 101101,
"дом": 6,
"code": [
"123",
"456"
]
},
"phoneNumbers": {
"1": "916 123-4567",
"2": "+7(123)1233-45-67"
}
}
code count: 2
```

PS: about the use of memory, I can not say anything, like everything is transmitted by links, but I'm not sure.

Translated Google Translate
# jsonMaker
Create JSON easy

PHP class for creating and modifying a text string in JSON format
# Installation

```
composer require alexsuperstar/jsonmaker
```

# Creating JSON

```php
$a = new \alexstar\JsonMaker();
$cc='xyz';
$a->{$cc}->bbb->cccc[0]->xxx=5;
$a->{$cc}->zz='qq';
$a->xyz->zf='qq';
$a->xx->zz='qq';
# Set value by path
$a('/zz/name','AlexStar');
$a('/zz/groups',['Admin'])[1]="Super user";
$a('/zz/address',['City'=>"Moscow"])->Streen="Bulvar";
# get value by path, return JsonMaker or null
$street=$a('/zz/address/City');// Moscow
$group0=$a('/zz/groups/0');// Admin
$group1=$a('/zz/groups/1');// Super user
var_dump($a('/zz/not_set')); // return null
$a('/zz')->groups[0]; //Admin
```

Result
```
{"xyz":{"bbb":{"cccc":[{"xxx":5}]},"zz":"qq","zf":"qq"},"xx":{"zz":"qq"},"zz":{"name":"AlexStar","groups":["Admin","Super user"],"address":{"City":"Moscow","Streen":"Bulvar"}}}
```

# Editing JSON

Original JSON
```
{
"firstName": "Иван",
"lastName": "Иванов",
"address": {
"streetAddress": "Московское ш., 101, кв.101",
"city": "Ленинград",
"postalCode": 101101
},
"phoneNumbers": [
"812 123-1234",
"916 123-4567"
]
}
```

PHP code

```php
<?php
$loader = require_once __DIR__ . '/vendor/autoload.php';
$json = new \alexstar\JsonMaker('{"firstName":"Иван","lastName":"Иванов","address":{"streetAddress":"Московское ш., 101, кв.101","city":"Ленинград","postalCode":101101},"phoneNumbers":["812 123-1234","916 123-4567"]}');
$json->firstName='Алексей';
$dom='дом';
$json->address->{$dom}=6;
$json->address->code[]='123';
$json->address->code[]='456';
$json->phoneNumbers[2]='+7(123)1233-45-67';
unset($json->address->city,$json->phoneNumbers[0]);
echo $json;
echo 'code count: ',count($json->address->code);
```

Result

```
{
"firstName": "Алексей",
"lastName": "Иванов",
"address": {
"streetAddress": "Московское ш., 101, кв.101",
"postalCode": 101101,
"дом": 6,
"code": [
"123",
"456"
]
},
"phoneNumbers": {
"1": "916 123-4567",
"2": "+7(123)1233-45-67"
}
}
code count: 2
```

PS: about the use of memory, I can not say anything, like everything is transmitted by links, but I'm not sure.

Translated Google Translate
191 changes: 100 additions & 91 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,91 +1,100 @@
# jsonMaker
Create JSON easy

*Read this in other languages: [English](README.en.md).*

PHP класс для создания и модификации текстовой строки в формате JSON

# Установка

```
composer require alexsuperstar/jsonmaker
```

# Создание JSON

```php
$a = new \alexstar\JsonMaker();
$cc='xyz';
$a->{$cc}->bbb->cccc[0]->xxx=5;
$a->{$cc}->zz='qq';
$a->xyz->zf='qq';
$a->xx->zz='qq';
echo $a;
```

Результат
```
{"xyz":{"bbb":{"cccc":[{"xxx":5}]},"zz":"qq","zf":"qq"},"xx":{"zz":"qq"}}
```

# Редактирование JSON

Исходный JSON
```
{
"firstName": "Иван",
"lastName": "Иванов",
"address": {
"streetAddress": "Московское ш., 101, кв.101",
"city": "Ленинград",
"postalCode": 101101
},
"phoneNumbers": [
"812 123-1234",
"916 123-4567"
]
}
```

PHP код

```php
<?php
$loader = require_once __DIR__ . '/vendor/autoload.php';
$json = new \alexstar\JsonMaker('{"firstName":"Иван","lastName":"Иванов","address":{"streetAddress":"Московское ш., 101, кв.101","city":"Ленинград","postalCode":101101},"phoneNumbers":["812 123-1234","916 123-4567"]}');
$json->firstName='Алексей';
$dom='дом';
$json->address->{$dom}=6;
$json->address->code[]='123';
$json->address->code[]='456';
$json->phoneNumbers[2]='+7(123)1233-45-67';
unset($json->address->city,$json->phoneNumbers[0]);
echo $json;
echo 'code count: ',count($json->address->code);
```

Результат

```
{
"firstName": "Алексей",
"lastName": "Иванов",
"address": {
"streetAddress": "Московское ш., 101, кв.101",
"postalCode": 101101,
"дом": 6,
"code": [
"123",
"456"
]
},
"phoneNumbers": {
"1": "916 123-4567",
"2": "+7(123)1233-45-67"
}
}
code count: 2
```


PS: по поводу расходования памяти ничего сказать не могу, вроде все передается по ссылкам но я не уверен.
# jsonMaker
Create JSON easy

*Read this in other languages: [English](README.en.md).*

PHP класс для создания и модификации текстовой строки в формате JSON

# Установка

```
composer require alexsuperstar/jsonmaker
```

# Создание JSON

```php
$a = new \alexstar\JsonMaker();
$cc='xyz';
$a->{$cc}->bbb->cccc[0]->xxx=5;
$a->{$cc}->zz='qq';
$a->xyz->zf='qq';
$a->xx->zz='qq';
# Устанавливаем значение по пути
$a('/zz/name','AlexStar');
$a('/zz/groups',['Admin'])[1]="Super user";
$a('/zz/address',['City'=>"Moscow"])->Streen="Bulvar";
# запрос значения, вернет объект JsonMaker или null
$street=$a('/zz/address/City');// Moscow
$group0=$a('/zz/groups/0');// Admin
$group1=$a('/zz/groups/1');// Super user
var_dump($a('/zz/not_set')); // return null
$a('/zz')->groups[0]; //Admin
```

Результат
```
{"xyz":{"bbb":{"cccc":[{"xxx":5}]},"zz":"qq","zf":"qq"},"xx":{"zz":"qq"},"zz":{"name":"AlexStar","groups":["Admin","Super user"],"address":{"City":"Moscow","Streen":"Bulvar"}}}
```

# Редактирование JSON

Исходный JSON
```
{
"firstName": "Иван",
"lastName": "Иванов",
"address": {
"streetAddress": "Московское ш., 101, кв.101",
"city": "Ленинград",
"postalCode": 101101
},
"phoneNumbers": [
"812 123-1234",
"916 123-4567"
]
}
```

PHP код

```php
<?php
$loader = require_once __DIR__ . '/vendor/autoload.php';
$json = new \alexstar\JsonMaker('{"firstName":"Иван","lastName":"Иванов","address":{"streetAddress":"Московское ш., 101, кв.101","city":"Ленинград","postalCode":101101},"phoneNumbers":["812 123-1234","916 123-4567"]}');
$json->firstName='Алексей';
$dom='дом';
$json->address->{$dom}=6;
$json->address->code[]='123';
$json->address->code[]='456';
$json->phoneNumbers[2]='+7(123)1233-45-67';
unset($json->address->city,$json->phoneNumbers[0]);
echo $json;
echo 'code count: ',count($json->address->code);
```

Результат

```
{
"firstName": "Алексей",
"lastName": "Иванов",
"address": {
"streetAddress": "Московское ш., 101, кв.101",
"postalCode": 101101,
"дом": 6,
"code": [
"123",
"456"
]
},
"phoneNumbers": {
"1": "916 123-4567",
"2": "+7(123)1233-45-67"
}
}
code count: 2
```


PS: по поводу расходования памяти ничего сказать не могу, вроде все передается по ссылкам но я не уверен.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "alexsuperstar/jsonmaker",
"description": "PHP JSON Maker",
"type": "library",
"version": "1.2.1",
"version": "1.3.0",
"authors": [
{
"name": "Alexey Starikov",
Expand Down
Loading

0 comments on commit dffadb8

Please sign in to comment.