Задать вопрос

Как правильно сделать Callback в методе класса своего модуля для 1С-Битрикс?

Добрый день,

для модуля, которым пользуются пользователи из marketplace (1С-Битрикс) необходимо добавить возможность изменять в случае необходимости результаты работы методов класса.

Для реализации callback воспользовался функцией call_user_func. Возможно в 1С-Битрикс уже есть свое Event'ы, которые можно зарегистрировать и присвоить к своему модулю?

На данный момент код имеет следующую структуру:

class myClass {
	public function import()
	{
		$arResult = array();

		$arData = array(
			'result1',
			'result2',
			'result3',
		);

		foreach($arData AS $v)
		{
			$arResult[] = 'Строка: '.$v;
		}

		if(function_exists('call_import'))
			$arResult = call_user_func('call_import', $arResult);
		
		return $arResult;
	}
}

function call_import($arData = array())
{
	$arResult = array();
	foreach($arData AS $v)
	{
		$arResult[] = $v.' что то изменили';
	}
	return $arResult;
}


данный способ позволит пользователю создать свою функцию call_import и изменить результат работы метода import.

На сколько данное решение верно?

Спасибо.
  • Вопрос задан
  • 1049 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Разумеется, нужно использовать стандартные события.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
BuriK666
@BuriK666
Компьютерный псих
class myClass {
  public function import($callback = null)
  {
    $arResult = array();

    $arData = array(
      'result1',
      'result2',
      'result3',
    );

    foreach($arData AS $v)
    {
      $arResult[] = 'Строка: '.$v;
    }

    if (is_callable($callback)) {
        call_user_func($callback, $arResult);
    }
    
    return $arResult;
  }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы