環境
- Laravel Framework 7.30.4
事象
Laravelのバッチ内で独自関数を実行しようとしたら、
以下のエラーメッセージが表示されて、実行できない。
Call to undefined function App\Console\Commands\関数名()
具体的には、
app/Console/Commands/
直下に置いた、以下のような内容のphpスクリプト
public function handle()
{
$str= testfunction();
echo $str;
return 0;
}
public function testfunction()
{
return 'test function.';
}
上記を
php artisan command:
コマンドで実行させたら、以下のエラーが出力された。
Call to undefined function App\Console\Commands\testfunction()
原因
一言でいうと、$this が抜けてる。
エラーメッセージ “Call to undefined function App\Console\Commands\testfunction()” は、関数 > testfunction() が未定義であることを示しています。このエラーは、関数が定義されていないか、適切な場所に配置されていないことを意味します。
Laravelのコマンドは、名前空間 App\Console\Commands 内のクラスとして実行されます。そのため、関数 >testfunction() を直接呼び出すことはできません。関数 testfunction() をメソッドとして定義する必要があります。
解決するためには、testfunction() をメソッドとして定義するために、コードを次のように修正する必要があります。
対処
public function handle()
{
$str = $this->testfunction();
echo $str;
return 0;
}
public function testfunction()
{
return 'test function.';
}
メソッドを呼び出すときは $this をつけます。
コメント