PHP code example of fg / parkour

1. Go to this page and download the library: Download fg/parkour 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/ */

    

fg / parkour example snippets


Parkour\Traverse::filter([5, 15, 20], function($value) {
	return $value > 10;
});

// [15, 20]

Parkour\Traverse::filter([5, 15, 20], new Parkour\Functor\Greater(10));
// [15, 20]

Parkour\Traverse::map([10, 20], new Parkour\Functor\Multiply(2), 0);
// [20, 40]

Parkour\Traverse::reduce([10, 20], new Parkour\Functor\Add(), 0);
// 30


use Parkour\Traverse;

Traverse::each(['foo' => 'bar'], function($value, $key) {
	echo "$key: $value";
});

// foo: bar

$data = [
	'foo' => 1,
	'bar' => 2
];

Traverse::map($data, function($value, $key) {
	return $value * 2;
});

// [
// 	'foo' => 2,
// 	'bar' => 4
// ]

$data = [
	'foo' => 1,
	'bar' => 2
];

Traverse::mapKeys($data, function($value, $key) {
	return strtoupper($key);
});

// [
// 	'FOO' => 1,
// 	'BAR' => 2
// ]

$data = [
	'foo' => true,
	'bar' => false
];

Traverse::filter($data, function($value, $key) {
	return $value === true;
});

// [
// 	'foo' => true
// ]

$data = [
	'foo' => true,
	'bar' => false
];

Traverse::reject($data, function($value, $key) {
	return $value === true;
});

// [
// 	'bar' => false
// ]

Traverse::reduce([1, 2], function($memo, $value, $key) {
	return $memo + $value;
}, 0);

// 3

Traverse::reduce([1, 2], new Parkour\Functor\Add(), 0); // 3
Traverse::reduce([2, 2], new Parkour\Functor\Mutiply(), 2); // 8

$data = [
	'foo' => 'PHP',
	'bar' => 'JavaScript'
];

Traverse::find($data, function($value, $key) {
	return $key === 'foo';
});

// 'PHP'

$data = [
	'foo' => 'PHP',
	'bar' => 'JavaScript'
];

Traverse::findKey($data, function($value, $key) {
	return $value === 'PHP';
});

// 'foo'

Traverse::some([5, 10, 20], function($value, $key) {
	return $value > 10;
});

// true

Traverse::some([1, 2], new Parkour\Functor\AlwaysFalse()); // false

Traverse::every([1, 2], function($value, $key) {
	return $value === 1;
});

// false

Traverse::every([1, 2], new Parkour\Functor\AlwaysTrue()); // true

use Parkour\Transform;

$data = [
	['id' => 12, 'name' => 'foo'],
	['id' => 37, 'name' => 'bar']
];

Transform::combine($data, function($row, $key) {
	yield $row['id'] => $row['name'];
});

// [
// 	12 => 'foo',
// 	37 => 'bar'
// ]

$data = [
	'foo' => 'bar'
	'baz'
];

Transform::normalize($data, true);

// [
// 	'foo' => 'bar',
// 	'baz' => true
// ]

$data = ['foo' => 'bar'];

Transform::reindex($data, [
	'foo' => 'baz'
]);

// [
// 	'baz' => 'bar'
// ]

$first = [
	'one' => 1,
	'two' => 2,
	'three' => [
		'four' => 4,
		'five' => 5
	]
];

$second = [
	'two' => 'two',
	'three' => [
		'four' => 'four'
	]
];

Transform::merge($first, $second);

// [
// 	'one' => 1,
// 	'two' => 'two',
// 	'three' => [
// 		'four' => 'four',
// 		'five' => 5
// 	]
// ]

use Parkour\Access;

$data = [
	'a' => 'foo',
	'b' => [
		'c' => 'bar'
	]
];

Access::has($data, 'b.c'); // true
Access::has($data, ['b', 'c']); // true

$data = [
	'a' => 'foo',
	'b' => [
		'c' => 'bar'
	]
];

Access::get($data, 'a'); // 'foo'
Access::get($data, 'b.c'); // 'bar'
Access::get($data, ['b', 'c']); // 'bar'

$data = [
	'a' => 'foo',
	'b' => [
		'c' => 'bar'
	]
];

$data = Access::set($data, 'a', 'a');
$data = Access::set($data, 'b.c', 'c');
$data = Access::set($data, ['b', 'd'], 'd');

// [
// 	'a' => 'a',
// 	'b' => [
// 		'c' => 'c',
// 		'd' => 'd'
// 	]
// ]

$data = [
	'a' => 'foo',
	'b' => [
		'c' => 'bar'
	]
];

$data = Access::update($data, 'a', function($value) {
	return strtoupper($value);	
});

$data = Access::update($data, 'b.c', function($value) {
	return $value . $value;
});

$data = Access::update($data, ['b', 'd'], 'd');

// [
// 	'a' => 'FOO',
// 	'b' => [
// 		'c' => 'barbar'
// 	]
// ]

$Add = new Parkour\Functor\Add();
Traverse::reduce([10, 20], $Add, 0);

// is equivalent to:
Traverse::reduce([10, 20], function($memo, $value) {
	return $memo + $value;
}, 0);

$Add = new Parkour\Functor\Add(5);
Traverse::map([10, 20], $Add, 0);

// is equivalent to:
Traverse::map([10, 20], function($value) {
	return $value + 5;
}, 0);