我刚刚发现了如何在foreach中为变量创建动态名称,但是找不到如何为函数创建动态名称。
我有这个foreach循环:
<mat-sidenav-container fullscreen>
<mat-sidenav
#leftSideNav
[disableClose]="false"
[mode]="getDashboardSideNavMode()"
[opened]="isDesktop()"
[position]="'start'"
[fixedInViewport]="isDesktop()"
id="matDashboardSidenav"
(open)="addNoScrollBackground()"
(close)="removeNoScrollBackground()">
<wab-dashboard-side-nav></wab-dashboard-side-nav>
</mat-sidenav>
<mat-sidenav-content [ngClass]="{'noscroll': isMenuOpen}">
//main content goes here
</mat-sidenav-content>
</mat-sidenav-container>
答案 0 :(得分:0)
您尝试使用函数call_user_func_array-调用带有参数数组的回调
答案 1 :(得分:0)
好吧,至少有两种方法可以做到这一点,一种是@billyonecan在他的评论中指定的,这与您显然想做的事情更接近,另一种是@QuanLee链接的方法。
这两种方法都是违反直觉的,并且由于周围缺乏标准,因此不建议完成。如果您以这种方式编写代码,则将火药添加到定时炸弹中,这将维护您正在编写的代码。
但是,尽管如此,使用第一种方法,您可以这样做:
// Without parameters
function test()
{
return 'cool';
}
$string = 'test';
echo $string() . "\n";
// With parameters
function testParameter($okay)
{
return "$okay, really?";
}
$string = 'testParameter';
echo $string( 'again' ) . "\n";
并使用第二种方法,如下所示:
// Without parameters
function test()
{
return 'cool';
}
$string = 'test';
echo call_user_func_array($string, array()) . "\n";
// With parameters
function testParameter($okay)
{
return "$okay, really?";
}
$string = 'testParameter';
echo call_user_func_array($string, array('Damn'));
现在,如果您必须在代码中执行此操作,那么我建议您使用call_user_func_array
,因为这样至少可以在代码中跟踪其用法,这将很难完成使用变量名。