如何在控制器文件夹之外且没有路由的情况下调用函数?
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 调用的那个函数的输出,正确的方法是什么:
- 创建一个 Controller 并在里面创建一个实例化
permutationWords()
函数的函数,然后通过 is route 调用控制器函数?
- 有没有其他更好更干净的方法来实现这个,我不知道?
好吧,您几乎不需要控制器代码就可以完成这项工作,而且控制器专为 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')));
}
我在 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 调用的那个函数的输出,正确的方法是什么:
- 创建一个 Controller 并在里面创建一个实例化
permutationWords()
函数的函数,然后通过 is route 调用控制器函数? - 有没有其他更好更干净的方法来实现这个,我不知道?
好吧,您几乎不需要控制器代码就可以完成这项工作,而且控制器专为 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')));
}