Как вызвать функцию вне папки контроллера и без маршрутов?

У меня есть следующее StringTools класс, определенный под Clanmovil\PlatformBundle\Tools Пространство имен:

namespace Clanmovil\PlatformBundle\Tools;

class StringTools
{
/**
* Generate as many unique permutations of letters for a given word
* @param string $input
* @return array
*/
public static function permutationWords($input)
{
$input = strtolower($input);
$results = [];
$length = strlen($input);
$counter = pow(2, $length);

for($i=0; $i<$counter; $i++) {
$binaryStr = str_pad(decbin($i), $length, '0', STR_PAD_LEFT);

$variant = '';
for($j=0; $j<$length; $j++) {
$variant .= ($binaryStr[$j] == '1') ? strtoupper($input[$j]) : $input[$j];
}
$results[] = $variant;
}

return $results;
}
}

Теперь я хочу использовать вывод этой функции, скажем, при вызове через AJAX, что будет правильным путем:

  • создать контроллер и внутри создать функцию, которая создает экземпляр permutationWords() функция, а затем вызвать функцию контроллера через маршрут?
  • Есть ли другой лучший и чистый способ достичь этого, и я не знаю?

2

Решение

Ну, вы можете сделать это практически без кода контроллера, а контроллер предназначен для веб-запросов, так что это лучший вариант. Почти без кода:

use Clanmovil\PlatformBundle\Tools\StringTools;

public function someAction (Request $request) {

// this could be a JSON response etc
return new Response(StringTools::permutationWords($request->get('someParam')));
}
2

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

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

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