这个问题在这里已经有答案了:
参考-这个错误在PHP中是什么意思?
(37个答案)
(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);