如何在foreach循环中创建动态函数名称?的PHP

时间:2018-08-26 17:11:21

标签: php

我刚刚发现了如何在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>

2 个答案:

答案 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,因为这样至少可以在代码中跟踪其用法,这将很难完成使用变量名。