summaryrefslogtreecommitdiff
path: root/src/Extension/CallbackWrapper.php
blob: 193fc13631815cede2b00af0bca607593195a8e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php

namespace Smarty\Extension;

use Smarty\Exception;

class CallbackWrapper {

	/**
	 * @var callback
	 */
	private $callback;
	/**
	 * @var string
	 */
	private $modifierName;

	/**
	 * @param string $modifierName
	 * @param callback $callback
	 */
	public function __construct(string $modifierName, $callback) {
		$this->callback = $callback;
		$this->modifierName = $modifierName;
	}

	public function handle(...$params) {
		try {
			return ($this->callback)(...$params);
		} catch (\ArgumentCountError $e) {
			throw new Exception("Invalid number of arguments to modifier " . $this->modifierName);
		}
	}

}