本文整理汇总了PHP中WindUtility::resolveExpression方法的典型用法代码示例。如果您正苦于以下问题:PHP WindUtility::resolveExpression方法的具体用法?PHP WindUtility::resolveExpression怎么用?PHP WindUtility::resolveExpression使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WindUtility
的用法示例。
在下文中一共展示了WindUtility::resolveExpression方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: resolveActionHook
/**
* 获得指定扩展点的全部扩展调用
*
* 过滤当前挂在的所有{@see $filters},根据filter的表达式定义过滤当前需要被执行的所有filter,
* 并返回.该方法在{@see PwBaseController::runHook}中被使用.当前表达式参数解析支持,
* <i>request,service(PwBaseHookService)</i>{@example <code>
* 例如: 'expression' => 'special.get==1'
* 则该该方法会去判断request,get请求中的special的值是否等于1,
* 如果为true则注册该过滤器,如果为false则不注册该过滤器,当expression不定义时,
* 则认为在任何条件下都注册该过滤器.
* </code>}
* @param array $filters
* @param PwBaseHookService $service
* @return array
*/
public static function resolveActionHook($filters, $service = null)
{
$_filters = array();
foreach ((array) $filters as $filter) {
if (empty($filter['class'])) {
continue;
}
if (!is_file(Wind::getRealPath($filter['class']))) {
continue;
}
if (!empty($filter['expression'])) {
$v1 = '';
list($n, $p, $o, $v2) = WindUtility::resolveExpression($filter['expression']);
switch (strtolower($n)) {
case 'service':
$call = array($service, 'getAttribute');
break;
case 'config':
$call = 'PwHook::_getConfig';
break;
default:
$call = 'PwHook::_getRequest';
break;
}
$v1 = call_user_func_array($call, explode('.', $p));
if (!WindUtility::evalExpression($v1, $v2, $o)) {
continue;
}
}
$_filters[] = $filter;
}
return $_filters;
}