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

Php 在公共函数中使用公共函数,php,loops,for-loop,Php,Loops,For Loop,在php中是否可以在公共函数中使用公共函数 我得到了一些公共函数,可以更改输入并返回它。我想在一个公共函数中创建一个for语句,该语句循环遍历我的函数,如: $input for= function1 -> output1 -> function2->output2->function3->output3. 我想把它的输出用于下一个函数。另外,for循环中的4个函数必须循环9次 在这种情况下,它是关于AES加密的。我得到了4个函数:subBytes、shiftR

在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;
}
公共函数子字节($state)
{
对于($row=0;$row使用如下代码:

$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);
}

以及它如何影响函数管道的创建?您可以使用此方法将前一个函数的输出与后一个函数的输入连接起来。好的,我查看更新的问题Objective的公共函数的第二个版本。当我实现您的代码时,我得到以下错误:解析错误:语法错误,意外',在C:\w中amp\www\aes.php第114行$methods行中的某些内容不正确。请将注释添加到您的114行中,因为该字符串上存在错误,
public function encrypt
的此代码也没有语法错误。我现在已将数组更改为第一步:子字节。这一步有效!我得到了一个输出,现在我需要使用该输出或者我的下一个函数。
public function encrypt($input){//array,方法名为$methods=array('subBytes'/*,'shiftRows','mixColumns','addRoundKey'*/);foreach($methods as$method){$input=$this->$method($input);}return($input);
公共函数blablablabla()
表示类的方法。只要它不是
静态方法,就需要使用对象调用它。不能仅调用
子字节()
,您可能需要
$this->subBytes()
。在运行时生成函数名时,您可以使用中提供的解决方案,或者,对于更复杂的情况(例如,动态列表或参数),您可以使用
数组($this$function)
作为函数的第一个参数。