1

我有以下代码:

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Enemy extends Model
{
    // ...
    static function fight($id)
    {
        if(Enemy::calcDist($id))
        {
            $model = Enemy::find($id);
            if($model->status == 1)
            {
                $model->status = 2;
                $model->save();
            }
        }
    }
}

当我尝试App\Enemy::fight(1)在 php tinker 中执行时,它显示错误:

"Class 'App\App\Enemy' not found".

我尝试了 with "calcDist($id)", with "self::calcDist($id)", 也在find($id)函数中,但没有结果。

我该如何解决这个问题?

编辑:我发现了问题;该错误来自代码的另一部分......

4

1 回答 1

1

当您在时,namespace App您不需要App\Enemy在通话中使用。

简单地使用Enemy::fight(1),或者使用绝对命名空间\App\Enemy::fight(1)

当您使用他的名字的静态类时,引擎会将该类搜索到当前命名空间中。如果没有给出命名空间,那么它使用命名空间“\”。

namespace App;

Enemy::fight(1); // \App\Enemy::fight(1) ok
App\Enemy::fight(1); // \App\App\Enemy::fight(1) wrong
于 2018-01-24T17:45:34.487 回答