У меня есть следующий код:
<?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 выдает ошибку:
"Class 'App\App\Enemy' not found"
,
Я пробовал с "calcDist($id)"
, с "self::calcDist($id)"
также в find($id)
функция, но нет результата.
Как я могу решить это?
Изменить: я нашел проблему; эта ошибка происходит из другой части кода …
Когда ты в 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
Других решений пока нет …