Так у меня есть черта вроде как ниже:PHPDoc тип @return равен тип поля класса (в PhpStorm 10.0.4)
trait RepositoryTrait
{
/**
* Find a model by its primary key.
*
* @param int $id
* @param array $columns
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function find($id, array $columns = ['*'])
{
return $this->query()->find($id, $columns);
}
}
и интерфейс:
interface Repository
{
/**
* Find a model by its primary key.
*
* @param int $id
* @param array $columns
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function find($id, array $columns = ['*']);
}
и у меня есть класс хранилища:
class FixedAssetRepository implements Repository
{
use RepositoryTrait;
/**
* FixedAsset model.
*
* @var FixedAsset
*/
protected $model;
/**
* Repository constructor.
*
* @param FixedAsset $fixedAsset
*/
public function __construct(FixedAsset $fixedAsset)
{
$this->model = $fixedAsset;
}
}
и что я ищу, так или иначе определить способ find
(в виде или интерфейсе) - тип FixedAsset
- но это должно всегда работать для каждого нового класса Repository
, который я создам (который реализует интерфейс репозитория).
мне это нужно для типа намекая в PhpStorm 10.0.4
Можно ли каким-то образом?
Таким образом, результат должен быть, что, когда я звоню где т.е .:
$fixedAsset = $this->fixedAssetRepositry->find($id);
PhpStorm будет знать, что $fixedAsset
является объект класса FixedAsset
не только \Illuminate\Database\Eloquent\Model
(теперь работает так).
Так что мне нужно что-то, что, как в интерфейсе (или признака):
/**
* Find a model by its primary key.
*
* @param int $id
* @param array $columns
* @return $this->model
*/
public function find($id, array $columns = ['*']);
но конечно @return $this->model
не работает.
Буду благодарен за любые предложения по этому поводу.
Лучший ** Я ** мог думать прямо сейчас, чтобы использовать '@ method' и "переобъявить" его правильный тип возврата - посмотрите, будет ли это работать. – LazyOne
Отлично! Как просто ... Вот что мне нужно. Большое спасибо. Вы можете опубликовать этот ответ, чтобы я мог отметить его как решение. –