Как вызвать функцию по её имени, передав параметр в виде объекта?

Как можно безопасно вызывать функцию из массива объектов в PHP, если функции находятся в других файлах и получают объект в качестве параметра? Попробовал использовать window[Data['function'].name] и new Function, но не получилось передать объект в функцию. Какую другую стратегию можно использовать для выполнения этой операции?
  • 18 февраля 2024 г. 20:48
Ответы на вопрос 2
Для вызова функции по её имени и передачи параметра в виде объекта можно воспользоваться следующим способом:

1. Объявить объект с функциями и их именами:

```javascript
const functions = {
  func1: function(obj) {
    console.log(obj);
  },
  func2: function(obj) {
    console.log(obj);
  }
};
```

2. Вызвать функцию по её имени, передав объект в качестве параметра:

```javascript
const functionName = 'func1';
const obj = { key: 'value' };

functions[functionName](obj);
```

Что касается вызова функции из массива объектов в PHP, мы можем использовать функцию `call_user_func_array`, которая может вызывать функции по их имени и передавать параметры в виде массива. Для этого нужно создать массив объектов с именем функции и параметрами и далее вызывать функцию с помощью `call_user_func_array`.

Пример:

```php
$functions = [
  ['func1', ['param1', 'param2']],
  ['func2', ['param3', 'param4']]
];

foreach($functions as $func){
  $functionName = $func[0];
  $params = $func[1];
  call_user_func_array($functionName, $params);
}
```

Таким образом, с использованием `call_user_func_array` и массива объектов, можно безопасно вызывать функции из других файлов и передавать им объект в качестве параметра.
Кому понадобится 

const functionName = 'MyFunction';
const Param = { 1: 'test', 2: 'work' }; 
new Function('params', `${functionName}.apply(null, [params])`)(Param);
Похожие вопросы