dougou5852 2015-09-30 15:37
浏览 175
已采纳

调用未定义的函数App \ Http \ Controllers \ [函数名] [重复]

This question already has an answer here:

In my controller, I create a function getFactorial

public static function getFactorial($num)
{
    $fact = 1;
    for($i = 1; $i <= $num ;$i++)
        $fact = $fact * $i;
    return $fact;
}

Then, I use it like this

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!');

}

For some reason, I keep getting this error

Call to undefined function App\Http\Controllers\getFactorial()

Can someone please teach me how to fix this error ?

Much appreciated in advance.


CodeController.php

<?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!');

    }


}
</div>
  • 写回答

2条回答 默认 最新

  • doubu2730 2015-09-30 15:41
    关注

    say you define the static getFactorial function inside a CodeController

    then this is the way you need to call a static function, because static properties and methods exists with in the class, not in the objects created using the class.

    CodeController::getFactorial($index);
    

    ----------------UPDATE----------------

    To best practice I think you can put this kind of functions inside a separate file so you can maintain with more easily.

    to do that

    create a folder inside app directory and name it as lib (you can put a name you like).

    this folder to needs to be autoload to do that add app/lib to composer.json as below. and run the composer dumpautoload command.

    "autoload": {
        "classmap": [
                    "app/commands",
                    "app/controllers",
                    ............
                    "app/lib"
        ]
    },
    

    then files inside lib will autoloaded.

    then create a file inside lib, i name it helperFunctions.php

    inside that define the function.

    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;
    
         }
    }
    

    and call it anywhere within the app as

    $fatorial_value = getFactorial(225);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形