Laravelのバッチ内で独自関数を実行しようとしたら、「Call to undefined function App\Console\Commands\関数名()」 | クズリーマンのカス備忘録

Laravelのバッチ内で独自関数を実行しようとしたら、「Call to undefined function App\Console\Commands\関数名()」

laravel-logo Laravel
スポンサーリンク

環境

  • 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 をつけます。

コメント

タイトルとURLをコピーしました