2

我在命名空间下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()函数,然后通过路由调用控制器函数?
  • 有没有其他更好更干净的方法来实现这一点,我不知道?
4

1 回答 1

2

好吧,您几乎不需要控制器代码就可以完成这项工作,并且控制器是为 Web 请求而设计的,因此它是最佳选择。几乎没有任何代码:

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')));
}
于 2015-12-17T03:46:46.937 回答