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

这个问题在这里已经有答案了
参考-这个错误在PHP中是什么意思?

(37个答案)

三年前关闭的

在我的控制器中,我创建了一个函数getFactorial

公共静态函数getFactorial($num)
{
$fact=1;
对于($i=1;$i<=$num;$i++)
$fact=$fact*$i;
返回$fact;
}

然后,我就这样使用它

公共函数编码流程()
{
$word=strtoupper(输入::get('word'));
$length=strlen($word);
$max_值=($length*26);
$characters=str_split($word);
$num=1;
$index=1;
排序($个字符);
foreach($characters作为$character){
$num+=getFactorial($index)*$index;
$index++;
}
返回重定向::到(“/coding puzzle”)
->带('word',$word)
->带('num',$num)
->with('success','Submit successfully!');
}

由于某种原因,我不断地犯这个错误

调用未定义的函数App\Http\Controllers\getFactorial()

有人能教我如何修正这个错误吗

事先非常感谢


CodeController.php

<?php
名称空间App\Http\Controllers;
使用查看、输入、重定向;
类CodeController扩展控制器{
公共功能编码拼图()
{
返回视图::make('code.puzzle');
}
公共静态函数getFactorial($num)
{
$fact=1;
对于($i=1;$i<=$num;$i++)
$fact=$fact*$i;
返回$fact;
}
公共函数编码过程()
{
$word=strtoupper(输入::get('word'));
$length=strlen($word);
$max_值=($length*26);
$characters=str_split($word);
$num=1;
$index=1;
排序($个字符);
foreach($characters作为$character){
$num+=getFactorial($index)*$index;
$index++;
}
返回重定向::到(“/coding puzzle”)
->带('word',$word)
->带('num',$num)
->with('success','Submit successfully!');
}
}

假设您在CodeController

然后这就是调用静态函数的方式,因为静态属性和方法存在于类中,而不是在使用该类创建的对象中。

CodeController::getFactorial($index);

—————-更新—————-

为了达到最佳实践,我认为您可以将此类函数放在一个单独的文件中,以便更轻松地维护

这样做

app目录中创建一个文件夹,并将其命名为lib(您可以输入您喜欢的名称)

需要自动加载此文件夹才能将app/lib添加到composer.json,如下所示。并运行composer dumpautoload命令

“自动加载”:{
“类映射”:[
“应用程序/命令”,
“应用程序/控制器”,
…………
“应用程序/库”
]
},

然后lib中的文件将自动加载

然后在lib中创建一个文件,我将其命名为helperFunctions.php

里面定义了函数

如果(!function_存在('getFactorial'))
{
/**
*返回数字的阶乘
*
*@param$number
*@返回字符串
*/
函数getFactorial($date)
{
$fact=1;
对于($i=1;$i<=$num;$i++)
$fact=$fact*$i;
返回$fact;
}
}

并在应用程序中的任何位置将其称为

$fatorial_值=getFactorial(225);

发表评论