如何调用控制器文件夹外的函数,没有路由?

时间:2015-12-17 02:27:43

标签: php ajax symfony symfony-2.8

我在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调用,这将是正确的方式:

  • 创建一个Controller并在里面创建一个实例化permutationWords()函数然后通过路由调用控制器函数的函数?
  • 有没有其他更好,更干净的方法来实现这一目标,我不知道?

1 个答案:

答案 0 :(得分: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')));
}