Можно ли использовать публичные функции внутри публичной функции в php?Использовать публичные функции внутри публичной функции
У меня есть несколько открытых функций, которые меняют ввод и возвращают его. Я хочу сделать заявление для внутреннего общественной функции, которая перебирает мои функции, как:
$input
for= function1 -> output1 -> function2->output2->function3->output3.
Я хочу использовать вывод, что для моей следующей функции. Кроме того, 4 функции, которые у меня есть в цикле for, имеют цикл 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;
}
'общественная функция блабла()' означает метод класса. Пока он не является «статическим» методом, он должен быть вызван с использованием объекта. Вы не можете называть его просто 'subBytes()', вы, вероятно, хотите '$ this-> subBytes()'. Когда имя функции генерируется во время выполнения, вы можете либо использовать решение, представленное в [этом ответе] (http://stackoverflow.com/a/35886758/4265352), либо для более сложных ситуаций (динамических списков или аргументов, fe) вы может использовать функцию ['call_user_func()'] (https://secure.php.net/manual/en/function.call-user-func.php) с помощью 'array ($ this, $ function)' как своего первого аргумент. – axiac