У меня есть следующее 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()
функция, а затем вызвать функцию контроллера через маршрут?Ну, вы можете сделать это практически без кода контроллера, а контроллер предназначен для веб-запросов, так что это лучший вариант. Почти без кода:
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')));
}
Других решений пока нет …