扩展ExpressionLanguage
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.5,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
扩展ExpressionLanguage
ExpressionLanguage可以扩展通过添加自定义功能。例如,在Symfony框架,安全检查用户的ob娱乐下载角色定制函数。
请注意
如果你想学习如何使用函数表达式中,读作“表达式语法”。
注册功能
在每个特定的注册功能ExpressionLanguage
实例。这意味着函数可以用于任何表达式执行的实例。
注册一个函数,使用注册()。这种方法有三个参数:
- 的名字一个表达式的函数的名称;
- 编译器——一个函数时执行编译使用的函数表达式;
- 评估者——一个函数时执行表达式进行求值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
使用ob娱乐下载\组件\ExpressionLanguage\ExpressionLanguage;美元语言=新ExpressionLanguage ();美元语言- >注册(“小写”,函数(美元str){返回sprintf (”(is_string (% 1 $ s) ?函数(% 1 $ s): % 1 $ s) ',美元str);},函数(美元参数,美元str){如果(! is_string (美元str)){返回美元str;}返回函数美元str);});回声美元语言- >评估(“小写(“HELLO”)”);
这将打印你好
。这两个编译器和评估者传递一个参数
变量作为第一个参数,等于第二个参数evaluate ()
或编译()
(如“价值观”在评估或“名称”,如果编译)。
创建一个新的ExpressionLanguage类
当你使用ExpressionLanguage
类库中,建议创建一个新的ExpressionLanguage
类和注册功能。覆盖registerFunctions
添加自己的功能:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
名称空间Acme\AwesomeLib\ExpressionLanguage;使用ob娱乐下载\组件\ExpressionLanguage\ExpressionLanguage作为BaseExpressionLanguage;类ExpressionLanguage扩展BaseExpressionLanguage{受保护的函数registerFunctions(){父::registerFunctions ();/ /也不要忘记注册核心功能美元这- >注册(“小写”,函数(美元str){返回sprintf (”(is_string (% 1 $ s) ?函数(% 1 $ s): % 1 $ s) ',美元str);},函数(美元参数,美元str){如果(! is_string (美元str)){返回美元str;}返回函数美元str);});}}
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。