Невозможно вызвать пользовательскую функцию в Laravel

Я пытаюсь получить набор перестановок на основе строки. Тем не менее, я не мог выполнить функцию правильно. Я не очень хорошо разбираюсь в public static, private или в том, как мне вызывать функцию.

<?php namespace Helpers;

class Helper {

public static function permute($str,$i,$n)
{
if ($i == $n)
return "$str\n";
else {
for ($j = $i; $j < $n; $j++) {
swap($str,$i,$j);
permute($str, $i+1, $n);
swap($str,$i,$j); // backtrack.
}
}
}

public static function swap(&$str,$i,$j) {
$temp = $str[$i];
$str[$i] = $str[$j];
$str[$j] = $temp;
}}

Вот как я вызываю функцию из моего контроллера.

Helper::permute($str,0,strlen($str))

Я получаю эту ошибку:

Вызов неопределенной функции Helpers \ swap ()

1

Решение

Вы вызываете метод swap() а также permute() из статического контекста, но обрабатывать их, как если бы они были нестатичными.
Попробуйте изменить его следующим образом:

public static function permute($str,$i,$n)
{
if ($i == $n)
return "$str\n";
else {
for ($j = $i; $j < $n; $j++) {
self::swap($str,$i,$j);
self::permute($str, $i+1, $n);
self::swap($str,$i,$j); // backtrack.
}
}
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]