2017 © Pedro Peláez
 

library json

PHP simple library for managing Json files.

image

josantonius/json

PHP simple library for managing Json files.

  • PHP
  • 5 Dependents
  • 0 Suggesters
  • 3 Forks
  • 0 Open issues
  • 8 Versions
  • 1 % Grown

The README.md

PHP JSON library

Latest Stable Version License Total Downloads CI CodeCov PSR1 PSR4 PSR12, (*1)

PHP simple library for managing JSON files., (*2)



Requirements

  • Operating System: Linux., (*3)

  • PHP versions: 8.1 | 8.2., (*4)

Installation

The preferred way to install this extension is through Composer., (*5)

To install PHP JSON library, simply:, (*6)

composer require josantonius/json

The previous command will only install the necessary files, if you prefer to download the full source code use:, (*7)

composer require josantonius/json --prefer-source

You can also clone the complete repository with Git:, (*8)

git clone https://github.com/josantonius/php-json.git

Available Classes

Json Class

Josantonius\Json\Json, (*9)

Create object referencing the JSON file:, (*10)

/**
 * @param string $filepath The path to the JSON file to be handled.
 */
public function __construct(public readonly string $filepath)
{
}

Get the path to the JSON file:, (*11)

public readonly string $filepath;

Check if the JSON file has already been created:, (*12)

/**
 * @return bool True if the file exists at the specified filepath, false otherwise.
 */
public function exists(): bool;

Get the contents of the JSON file:, (*13)

/**
 * @param bool $asObject If true and the value is an array, it is returned as an object.
 *
 * @throws GetFileException
 * @throws JsonErrorException
 *
 * @return mixed the contents of the JSON file.
 */
public function get(bool $asObject = false): mixed;

Set the contents of a JSON or a key within the file:, (*14)

/**
 * @param mixed  $content The data that will be written to the file or a key within the file.
 * @param string $dot     The dot notation representing the key to be modified within the file.
 *
 * @throws GetFileException
 * @throws JsonErrorException
 * @throws CreateFileException
 * @throws CreateDirectoryException
 * @throws NoIterableElementException
 *
 * @return mixed the content of the JSON file after the set operation.
 */
public function set(mixed $content = [], string $dot = null): array|bool|int|null|string;

Merge the provided data with the contents of a JSON file or a key within the file:, (*15)

/**
 * @param mixed  $content The data that will be written to the file or a key within the file.
 * @param string $dot     The dot notation representing the key to be modified within the file.
 *
 * @throws GetFileException
 * @throws JsonErrorException
 * @throws NoIterableFileException
 * @throws NoIterableElementException
 *
 * @return mixed the content of the JSON file after the merge operation.
 */
public function merge(array|object $content, string $dot = null): array;

Remove and get the last element of a JSON file or a key within the file:, (*16)

/**
 * @param string $dot The dot notation representing the key to be modified within the file.
 *
 * @throws GetFileException
 * @throws JsonErrorException
 * @throws NoIterableFileException
 * @throws NoIterableElementException
 *
 * @return mixed|null the last value of JSON file, or null if array is empty.
 */
public function pop(string $dot = null): mixed;

Add the provided data to the end of the contents of a JSON file or a key within the file:, (*17)

/**
 * @param mixed  $content The data that will be written to the file or a key within the file.
 * @param string $dot     The dot notation representing the key to be modified within the file.
 *
 * @throws GetFileException
 * @throws JsonErrorException
 * @throws NoIterableFileException
 * @throws NoIterableElementException
 *
 * @return mixed the content of the JSON file after the push operation.
 */
public function push(mixed $content, string $dot = null): array;

Remove and get the first element of a JSON file or a key within the file:, (*18)

/**
 * @param string $dot The dot notation representing the key to be modified within the file.
 *
 * @throws GetFileException
 * @throws JsonErrorException
 * @throws NoIterableFileException
 * @throws NoIterableElementException
 *
 * @return mixed|null the shifted value, or null if array is empty.
 */
public function shift(string $dot = null): mixed(mixed $content, string $dot = null): array;

Remove a key and its value from the contents of a JSON file:, (*19)

/**
 * @param string $dot       The dot notation representing the key to be modified within the file.
 * @param bool   $reindexed If true, the array will be re-indexed.
 *
 * @throws GetFileException
 * @throws JsonErrorException
 * @throws NoIterableFileException
 *
 * @return array the content of the JSON file after the unset operation.
 */
public function unset(string $dot, bool $reindexed = false): array;

Add the provided data to the beginning of the contents of a JSON file or a key within the file:, (*20)

/**
 * @param mixed  $content The data that will be written to the file or a key within the file.
 * @param string $dot     The dot notation representing the key to be modified within the file.
 *
 * @throws GetFileException
 * @throws JsonErrorException
 * @throws NoIterableFileException
 * @throws NoIterableElementException
 *
 * @return mixed the content of the JSON file after the unshift operation.
 */
public function unshift(mixed $content, string $dot = null): mixed;

Exceptions Used

use Josantonius\Json\Exceptions\GetFileException;           // if file reading failed
use Josantonius\Json\Exceptions\CreateFileException;        // if file creation failed
use Josantonius\Json\Exceptions\JsonErrorException;         // if the file contains invalid JSON
use Josantonius\Json\Exceptions\NoIterableFileException;    // if the file isn't a JSON array
use Josantonius\Json\Exceptions\CreateDirectoryException;   // if directory creation failed
use Josantonius\Json\Exceptions\NoIterableElementException; // if $dot isn't an array location

Usage

Example of use for this library:, (*21)

Get the path of the JSON file

use Josantonius\Json\Json;

$json = new Json('file.json');

$json->filepath; // 'file.json'

Check whether a local file exists

use Josantonius\Json\Json;

$json = new Json('file.json');

$json->exists(); // bool

Get the JSON file contents as array

file.json, (*22)

{
    "foo": "bar"
}

index.php, (*23)

use Josantonius\Json\Json;

$json = new Json('file.json');

$json->get(); // ['foo' => 'bar']

Get the JSON file contents as object

file.json, (*24)

{
    "foo": "bar"
}

index.php, (*25)

use Josantonius\Json\Json;

$json = new Json('file.json');

$json->get(asObject: true); // object(stdClass) { ["foo"] => string(3) "bar" }

Set an empty array in the JSON file contents

index.php, (*26)

use Josantonius\Json\Json;

$json = new Json('file.json');

$json->set();

file.json, (*27)

[]

Set the contents of a JSON file

index.php, (*28)

use Josantonius\Json\Json;

$json = new Json('file.json');

$json->set(['foo' => 'bar']);

file.json, (*29)

{
    "foo": "bar"
}

Set the contents of a key within the JSON file using dot notation

file.json, (*30)

{
    "foo": {
        "bar": []
    }
}

index.php, (*31)

use Josantonius\Json\Json;

$json = new Json('file.json');

$json->set('baz', 'foo.bar.0');

file.json, (*32)

{
    "foo": {
        "bar": [
            "baz"
        ]
    }
}

Merge the provided data with the contents of the JSON file

file.json, (*33)

{
    "foo": "bar"
}

index.php, (*34)

use Josantonius\Json\Json;

$json = new Json('file.json');

$json->merge(['bar' => 'foo']);

file.json, (*35)

{
    "foo": "bar",
    "bar": "foo"
}

Merge the provided data with the contents of a key within the file using dot notation

file.json, (*36)

{
    "foo": [
        {
            "bar": "baz"
        }
    ]
}

index.php, (*37)

use Josantonius\Json\Json;

$json = new Json('file.json');

$json->merge(['baz' => 'bar'], 'foo.0');

file.json, (*38)

{
    "foo": [
        {
            "bar": "baz",
            "baz": "bar"
        }
    ]
}

Remove and get the last element of a JSON file

file.json, (*39)

[
    1,
    2,
    3
]

index.php, (*40)

use Josantonius\Json\Json;

$json = new Json('file.json');

$json->pop(); // 3

file.json, (*41)

[
    1,
    2
]

Remove and get the last element of a key within the file using dot notation

file.json, (*42)

{
    "foo": [
        1,
        2,
        3
    ]
}

index.php, (*43)

use Josantonius\Json\Json;

$json = new Json('file.json');

$json->pop(); // 3

file.json, (*44)

{
    "foo": [
        1,
        2
    ]
}

Add the provided data to the end of the contents of a JSON file

file.json, (*45)

[
    {
        "name": "foo"
    }
]

index.php, (*46)

use Josantonius\Json\Json;

$json = new Json('file.json');

$json->push(['name'  => 'bar']);

file.json, (*47)

[
    {
        "name": "foo"
    },
    {
        "name": "bar"
    }
]

Add provided data to the end of the contents of a key within the file using dot notation

file.json, (*48)

{
    "foo": {
        "bar": [
            []
        ]
    }
}

index.php, (*49)

use Josantonius\Json\Json;

$json = new Json('file.json');

$json->push('baz', 'foo.bar.0');

file.json, (*50)

{
    "foo": {
        "bar": [
            [
                "baz"
            ]
        ]
    }
}

Remove and get the first element of the contents of a JSON file

file.json, (*51)

[
    1,
    2,
    3
]

index.php, (*52)

use Josantonius\Json\Json;

$json = new Json('file.json');

$json->shift(); // 1

file.json, (*53)

[
    2,
    3
]

Remove and get the first item of the contents of a key within the file using dot notation

file.json, (*54)

{
    "foo": {
        "bar": [
            [
                1
            ]
        ]
    }
}

index.php, (*55)

use Josantonius\Json\Json;

$json = new Json('file.json');

$json->shift('foo.bar.0'); // 1

file.json, (*56)

{
    "foo": {
        "bar": [
            []
        ]
    }
}

Remove a string key and its value from the contents of a JSON file

file.json, (*57)

{
    "foo": {
        "bar": [
            []
        ]
    }
}

index.php, (*58)

use Josantonius\Json\Json;

$json = new Json('file.json');

$json->unset('foo.bar');

file.json, (*59)

{
    "foo": []
}

Remove a numeric key and its value from the contents of a JSON file

file.json, (*60)

[
    1,
    2,
    3
]

index.php, (*61)

use Josantonius\Json\Json;

$json = new Json('file.json');

$json->unset('1');

file.json, (*62)

{
    "0": 1,
    "2": 3
}

Remove a numeric key and its value from the contents of a JSON file and re-index it

file.json, (*63)

[
    1,
    2,
    3
]

index.php, (*64)

use Josantonius\Json\Json;

$json = new Json('file.json');

$json->unset('1', reindexed: true);

file.json, (*65)

[
    1,
    3
]

Add the provided data to the beginning of the contents of a JSON file

file.json, (*66)

[
    1,
    2,
    3
]

index.php, (*67)

use Josantonius\Json\Json;

$json = new Json('file.json');

$json->unshift(0);

file.json, (*68)

[
    0,
    1,
    2,
    3
]

Add the provided data to the beginning of the contents of a key within the file using dot

file.json, (*69)

{
    "foo": {
        "bar": [
            [
                1
            ]
        ]
    }
}

index.php, (*70)

use Josantonius\Json\Json;

$json = new Json('file.json');

$json->unshift(0, 'foo.bar.0');

file.json, (*71)

{
    "foo": {
        "bar": [
            [
                0,
                1
            ]
        ]
    }
}

Tests

To run tests you just need composer and to execute the following:, (*72)

git clone https://github.com/josantonius/php-json.git
cd php-json
composer install

Run unit tests with PHPUnit:, (*73)

composer phpunit

Run code standard tests with PHPCS:, (*74)

composer phpcs

Run PHP Mess Detector tests to detect inconsistencies in code style:, (*75)

composer phpmd

Run all previous tests:, (*76)

composer tests

TODO

  • [ ] Add new feature
  • [ ] Improve tests
  • [ ] Improve documentation
  • [ ] Improve English translation in the README file
  • [ ] Refactor code for disabled code style rules (see phpmd.xml and phpcs.xml)

Changelog

Detailed changes for each release are documented in the release notes., (*77)

Contribution

Please make sure to read the Contributing Guide, before making a pull request, start a discussion or report a issue., (*78)

Thanks to all contributors! :heart:, (*79)

If this project helps you to reduce your development time, you can sponsor me to support my open source work :blush:, (*80)

License

This repository is licensed under the MIT License., (*81)

Copyright © 2016-present, Josantonius, (*82)

The Versions

06/01 2018

dev-master

9999999-dev

PHP simple library for managing Json files.

  Sources   Download

MIT

The Requires

  • php ^5.6 || ^7.0

 

The Development Requires

php json javascript hhvm data exchange file to array array to file javascript object notation

06/01 2018

1.1.7

1.1.7.0

PHP simple library for managing Json files.

  Sources   Download

MIT

The Requires

  • php ^5.6 || ^7.0

 

The Development Requires

php json javascript hhvm data exchange file to array array to file javascript object notation

12/11 2017

1.1.6

1.1.6.0

PHP simple library for managing Json files.

  Sources   Download

MIT

The Requires

  • php ^5.6 || ^7.0

 

The Development Requires

php json javascript hhvm data exchange file to array array to file javascript object notation

01/11 2017

1.1.5

1.1.5.0

PHP simple library for managing Json files.

  Sources   Download

MIT

The Requires

  • php ^5.6 || ^7.0

 

The Development Requires

php json javascript hhvm data exchange file to array array to file javascript object notation

14/10 2017

1.1.4

1.1.4.0

PHP simple library for managing Json files.

  Sources   Download

MIT

The Requires

  • php ^5.6 || ^7.0

 

The Development Requires

php json javascript hhvm data exchange file to array array to file javascript object notation

18/07 2017

1.1.2

1.1.2.0

PHP simple library for managing Json files.

  Sources   Download

MIT

The Requires

  • php ^5.6 || ^7.0

 

php json javascript hhvm data exchange file to array array to file javascript object notation

18/03 2017

1.1.1

1.1.1.0

PHP simple library for managing Json files.

  Sources   Download

MIT

The Requires

  • php ^5.6 || ^7.0

 

php json javascript hhvm data exchange file to array array to file javascript object notation

14/12 2016

1.0.0

1.0.0.0

PHP simple library for managing Json files.

  Sources   Download

MIT

The Requires

  • php >=7.0

 

php json javascript hhvm data exchange file to array array to file javascript object notation