无法在Laravel中调用自定义功能

时间:2015-04-22 09:03:52

标签: php laravel static namespaces public

我正在尝试检索基于字符串的排列集。但是,我无法正常执行该功能。我对公共静态或私有不太好,或者我应该如何调用该函数。

<?php namespace Helpers;

class Helper {

public static function permute($str,$i,$n) 
{
   if ($i == $n)
       return "$str\n";
   else {
        for ($j = $i; $j < $n; $j++) {
          swap($str,$i,$j);
          permute($str, $i+1, $n);
          swap($str,$i,$j); // backtrack.
       }
   }
}

public static function swap(&$str,$i,$j) {
    $temp = $str[$i];
    $str[$i] = $str[$j];
    $str[$j] = $temp;
}}

这就是我从控制器调用该函数的方法。

Helper::permute($str,0,strlen($str))

我收到了这个错误:

  

调用未定义的函数Helpers \ swap()

1 个答案:

答案 0 :(得分:3)

您从静态上下文中调用方法swap()permute(),但处理它们就像它们是非静态的一样。
尝试将其更改为以下内容:

public static function permute($str,$i,$n) 
{
    if ($i == $n)
        return "$str\n";
    else {
        for ($j = $i; $j < $n; $j++) {
            self::swap($str,$i,$j);
            self::permute($str, $i+1, $n);
            self::swap($str,$i,$j); // backtrack.
        }
    }
}