Как решить проблемы с пространствами имен в php tinker?

У меня есть следующий код:

<?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) функция, но нет результата.

Как я могу решить это?

Изменить: я нашел проблему; эта ошибка происходит из другой части кода …

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
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]