Call to undefined function AppHttpControllers [ function name ]
本问题已经有最佳答案,请猛点这里访问。
在我的控制器中,我创建了一个函数
1 2 3 4 5 6 7 | public static function getFactorial($num) { $fact = 1; for($i = 1; $i <= $num ;$i++) $fact = $fact * $i; return $fact; } |
那么,我就这样用它
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public function codingPuzzleProcess() { $word = strtoupper(Input::get('word')); $length = strlen($word); $max_value = ($length * 26); $characters = str_split($word); $num = 1 ; $index = 1; sort($characters); foreach ( $characters as $character) { $num += getFactorial($index) * $index; $index ++; } return Redirect::to('/coding-puzzle') ->with('word', $word ) ->with('num', $num ) ->with('success','Submit successfully!'); } |
出于某种原因,我一直在犯这个错误
有人能教我怎么修正这个错误吗?
事先非常感谢。
codecontroller.php文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | <?php namespace App\Http\Controllers; use View, Input, Redirect; class CodeController extends Controller { public function codingPuzzle() { return View::make('codes.puzzle'); } public static function getFactorial($num) { $fact = 1; for($i = 1; $i <= $num ;$i++) $fact = $fact * $i; return $fact; } public function codingPuzzleProcess() { $word = strtoupper(Input::get('word')); $length = strlen($word); $max_value = ($length * 26); $characters = str_split($word); $num = 1 ; $index = 1; sort($characters); foreach ( $characters as $character) { $num += getFactorial($index) * $index; $index ++; } return Redirect::to('/coding-puzzle') ->with('word', $word ) ->with('num', $num ) ->with('success','Submit successfully!'); } } |
假设您在
这就是调用静态函数的方法,因为静态属性和方法存在于类中,而不是使用类创建的对象中。
1 | CodeController::getFactorial($index); |
-----------更新------------
为了最佳实践,我认为您可以将此类函数放在单独的文件中,这样您就可以更容易地维护这些函数。
这样做
在
需要自动加载此文件夹才能将
1 2 3 4 5 6 7 8 | "autoload": { "classmap": [ "app/commands", "app/controllers", ............ "app/lib" ] }, |
然后,
然后在
在里面定义函数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | if ( ! function_exists('getFactorial')) { /** * return the factorial of a number * * @param $number * @return string */ function getFactorial($date) { $fact = 1; for($i = 1; $i <= $num ;$i++) $fact = $fact * $i; return $fact; } } |
在应用程序中的任何地方称之为
1 | $fatorial_value = getFactorial(225); |
如果它们在同一个控制器类中,则为:
1 2 3 4 | foreach ( $characters as $character) { $num += $this->getFactorial($index) * $index; $index ++; } |
否则,需要创建类的新实例,并调用方法,即:
1 2 3 4 5 | $controller = new MyController(); foreach ( $characters as $character) { $num += $controller->getFactorial($index) * $index; $index ++; } |