在公共函数中使用公共函数

时间:2016-03-09 08:41:50

标签: php loops for-loop

是否可以在php中的公共函数中使用公共函数?

我有一些公共函数可以更改输入并返回它。我想在一个遍历我的函数的公共函数中创建一个for语句,如:

$input

for= function1 -> output1 -> function2->output2->function3->output3.

我想将其输出用于我的下一个功能。我的for循环中的4个函数也必须循环9次。

在这种情况下,它关于AES加密。我有4个函数叫做:subBytes,shiftRows,mixColumns,addRoundkey。

这是我的公共功能加密:

public function encrypt($input)
{
    $functions= ('subBytes', 'shiftRows', 'mixColumns', 'addRoundKey' );
    foreach($functions as $function)
    {
        $input = $$function($input);
    }

    return($input);
} //end function encrypt

这是我的职能之一:

public function subBytes($state)
{
    for ($row=0; $row<4; $row++){ // for all 16 bytes in the (4x4-byte) State
        for ($column=0; $column<4; $column++){ // for all 16 bytes in the (4x4-byte) State
            $_SESSION['debug'] .= "state[$row][$column]=" . $state[$row][$column] ."-->" . self::$sBox[$state[$row][$column]]."\n";
            $state[$row][$column] = self::$sBox[$state[$row][$column]];
        }
     }
     return $state;
}

1 个答案:

答案 0 :(得分:0)

使用这样的代码:

$output3 = function3(function2(function1($input)));

或者你可以将你的函数名称添加到数组中并迭代它:

$input = ''; // some value
$functioins = ('function1', 'function2', 'function3', 'function4');
foreach ($functions as $function) {
    $input = $$function($input);
}
$output = $input;

如果我们尝试使用object的公共函数,那么:

public function encrypt($input)
{
    // array with methods names
    $methods= array('subBytes', 'shiftRows', 'mixColumns', 'addRoundKey' );
    foreach($methods as $method)
    {
        $input = $this->$method($input);
    }

    return($input);
}