<?php
$user = [
'id' => 1,
'name' => 'Ivan Ivanov',
'role' => 'developer',
'salary' => 100
];
$apiTemplatesSet1 = [
'/api/items/%id%/%name%',
'/api/items/%id%/%role%',
'/api/items/%id%/%salary%'
];
class Invoker
{
private $data;
public function __construct(array $data)
{
$this->data = $data;
}
public function __invoke(array $key): string
{
return $this->data[$key[1]];
}
}
$function = new Invoker($user);
$result = array_map(function ($key) use ($function)
{
return preg_replace_callback('#%(.*)%#isU', $function, $key);
}
, array_values($apiTemplatesSet1));
echo '<pre>' . print_r($result, true);
- Output for 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.13
- <pre>Array
(
[0] => /api/items/1/Ivan Ivanov
[1] => /api/items/1/developer
[2] => /api/items/1/100
)
preferences:
125.6 ms | 407 KiB | 5 Q