如何在控制器文件夹之外且没有路由的情况下调用函数?

How to call a function outside controller folder and without routes?

我在 Clanmovil\PlatformBundle\Tools 命名空间下定义了以下 StringTools class:

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 调用的那个函数的输出,正确的方法是什么:

好吧,您几乎不需要控制器代码就可以完成这项工作,而且控制器专为 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')));
}