Вызов неопределенной функции AppHttpControllers [имя функции] [дубликат]
этот вопрос уже есть ответ здесь:
- Reference-что означает эта ошибка в PHP? 30 ответов
в моем контроллере я создаю функцию getFactorial
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!');
}
по какой-то причине я продолжаю получать эту ошибку
Call to undefined function AppHttpControllersgetFactorial()
кто-нибудь может научить меня, как исправить эту ошибку ?
ценится заранее.
CodeController.в PHP
<?php
namespace AppHttpControllers;
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!');
}
}
2 ответов
скажем, вы определяете .
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
............
"app/lib"
]
},
затем файлы внутри lib
будет подгружаться.
затем создайте файл внутри lib
, Я называю это helperFunctions.php
внутри, которые определяют функция.
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;
}
}
и назовите его в любом месте приложения как
$fatorial_value = getFactorial(225);
если они в одном классе контроллера, это будет выглядеть так:
foreach ( $characters as $character) {
$num += $this->getFactorial($index) * $index;
$index ++;
}
в противном случае вам нужно создать новый экземпляр класса и вызвать метод, т. е.:
$controller = new MyController();
foreach ( $characters as $character) {
$num += $controller->getFactorial($index) * $index;
$index ++;
}