PHP code example of xchert / property-access

1. Go to this page and download the library: Download xchert/property-access library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

xchert / property-access example snippets


use Xchert\PropertyAccess\PropertyAccessor;
use Xchert\PropertyAccess\ArrayAccessor;
use Xchert\PropertyAccess\ObjectAccessor;

$propertyAccessor = new PropertyAccessor();

// Register ArrayAccessor for array support
$propertyAccessor->registerAccessor(new ArrayAccessor(), ArrayAccessor::ID, 0);

// Register ObjectAccessor for object support
$propertyAccessor->registerAccessor(new ObjectAccessor(), ObjectAccessor::ID, 0);

use Xchert\PropertyAccess\Path;

// Using constructor
$path = new Path(['user', 'profile', 'name']);

// Parsing from JSON string
$path = Path::parse('["user", "profile", "name"]');

$data = ['user' => ['profile' => ['name' => 'John']]];
$path = new Path(['user', 'profile', 'name']);

if ($propertyAccessor->has($path, $data)) {
    // Returns true
}

$data = ['user' => ['profile' => ['name' => 'John']]];
$path = new Path(['user', 'profile', 'name']);

$name = $propertyAccessor->get($path, $data); // 'John'

$data = ['user' => ['profile' => ['name' => 'John']]];
$path = new Path(['user', 'profile', 'name']);

$propertyAccessor->set($path, $data, 'Jane');
// $data is now ['user' => ['profile' => ['name' => 'Jane']]]

$data = ['tags' => ['php', 'git']];
$path = new Path(['tags']);

$propertyAccessor->push($path, $data, 'composer');
// $data is now ['tags' => ['php', 'git', 'composer']]

$data = ['user' => ['roles' => ['admin']]];
$path = new Path(['user']);
$value = ['roles' => ['editor'], 'active' => true];

$propertyAccessor->merge($path, $data, $value);
// $data is now ['user' => ['roles' => ['admin', 'editor'], 'active' => true]]

use Xchert\PropertyAccess\PathCollection;
use Xchert\PropertyAccess\Util;

$data = [
    'products' => [
        ['id' => 1, 'name' => 'Laptop'],
        ['id' => 2, 'name' => 'Mouse'],
    ]
];

$paths = new PathCollection([
    new Path(['products', Util::COLLECTOR_FIELD, 'name'])
]);

$result = $propertyAccessor->collect($paths, $data);
// $result is:
// [
//     '["products","0","name"]' => 'Laptop',
//     '["products","1","name"]' => 'Mouse',
// ]

// To get a nested array structure, use Flags::COLLECT_NESTED
use Xchert\PropertyAccess\Flags;

$result = $propertyAccessor->collect($paths, $data, Flags::COLLECT_NESTED);
// $result is:
// [
//     'products' => [
//         ['name' => 'Laptop'],
//         ['name' => 'Mouse'],
//     ]
// ]

use Xchert\PropertyAccess\Flags;

$propertyAccessor->get($path, $data, Flags::STRICT);