[ExpressionLanguage] renamed addFunction() to register()

This commit is contained in:
Fabien Potencier 2013-09-20 16:16:44 +02:00
parent 5076ec7e90
commit e8691366ce
4 changed files with 17 additions and 10 deletions

View File

@ -27,13 +27,13 @@ class ExpressionLanguage extends BaseExpressionLanguage
{ {
parent::registerFunctions(); parent::registerFunctions();
$this->addFunction('service', function ($arg) { $this->register('service', function ($arg) {
return sprintf('$this->get(%s)', $arg); return sprintf('$this->get(%s)', $arg);
}, function (array $variables, $value) { }, function (array $variables, $value) {
return $variables['container']->get($value); return $variables['container']->get($value);
}); });
$this->addFunction('parameter', function ($arg) { $this->register('parameter', function ($arg) {
return sprintf('$this->getParameter(%s)', $arg); return sprintf('$this->getParameter(%s)', $arg);
}, function (array $variables, $value) { }, function (array $variables, $value) {
return $variables['container']->getParameter($value); return $variables['container']->getParameter($value);

View File

@ -82,14 +82,21 @@ class ExpressionLanguage
return $this->cache[$key]; return $this->cache[$key];
} }
public function addFunction($name, $compiler, $evaluator) /**
* Registers a function.
*
* @param string $name The function name
* @param callable $compiler A callable able to compile the function
* @param callable $evaluator A callable able to evaluate the function
*/
public function register($name, $compiler, $evaluator)
{ {
$this->functions[$name] = array('compiler' => $compiler, 'evaluator' => $evaluator); $this->functions[$name] = array('compiler' => $compiler, 'evaluator' => $evaluator);
} }
protected function registerFunctions() protected function registerFunctions()
{ {
$this->addFunction('constant', function ($constant) { $this->register('constant', function ($constant) {
return sprintf('constant(%s)', $constant); return sprintf('constant(%s)', $constant);
}, function (array $values, $constant) { }, function (array $values, $constant) {
return constant($constant); return constant($constant);

View File

@ -25,7 +25,7 @@ You can extend your DSL with functions:
$evaluator = function (array $variables, $value) { $evaluator = function (array $variables, $value) {
return strtoupper($value); return strtoupper($value);
}; };
$language->addFunction('upper', $compiler, $evaluator); $language->register('upper', $compiler, $evaluator);
echo $language->evaluate('"foo" ~ upper(foo)', array('foo' => 'bar')); echo $language->evaluate('"foo" ~ upper(foo)', array('foo' => 'bar'));
// would output fooBAR // would output fooBAR

View File

@ -24,31 +24,31 @@ class ExpressionLanguage extends BaseExpressionLanguage
{ {
parent::registerFunctions(); parent::registerFunctions();
$this->addFunction('is_anonymous', function () { $this->register('is_anonymous', function () {
return '$trust_resolver->isAnonymous($token)'; return '$trust_resolver->isAnonymous($token)';
}, function (array $variables) { }, function (array $variables) {
return $variables['trust_resolver']->isAnonymous($variables['token']); return $variables['trust_resolver']->isAnonymous($variables['token']);
}); });
$this->addFunction('is_authenticated', function () { $this->register('is_authenticated', function () {
return '!$trust_resolver->isAnonymous($token)'; return '!$trust_resolver->isAnonymous($token)';
}, function (array $variables) { }, function (array $variables) {
return !$variables['trust_resolver']->isAnonymous($variables['token']); return !$variables['trust_resolver']->isAnonymous($variables['token']);
}); });
$this->addFunction('is_fully_authenticated', function () { $this->register('is_fully_authenticated', function () {
return '!$trust_resolver->isFullFledge($token)'; return '!$trust_resolver->isFullFledge($token)';
}, function (array $variables) { }, function (array $variables) {
return !$variables['trust_resolver']->isFullFledge($variables['token']); return !$variables['trust_resolver']->isFullFledge($variables['token']);
}); });
$this->addFunction('is_remember_me', function () { $this->register('is_remember_me', function () {
return '!$trust_resolver->isRememberMe($token)'; return '!$trust_resolver->isRememberMe($token)';
}, function (array $variables) { }, function (array $variables) {
return !$variables['trust_resolver']->isRememberMe($variables['token']); return !$variables['trust_resolver']->isRememberMe($variables['token']);
}); });
$this->addFunction('has_role', function ($role) { $this->register('has_role', function ($role) {
return sprintf('in_array(%s, $roles)', $role); return sprintf('in_array(%s, $roles)', $role);
}, function (array $variables, $role) { }, function (array $variables, $role) {
return in_array($role, $variables['roles']); return in_array($role, $variables['roles']);