是否可以在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;
}
答案 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);
}