使用phpdocs在php中收集模型的好方法

时间:2016-05-15 08:15:42

标签: php collections phpdoc

假设我有以下模型:

class PackageModel
{
    public $name;
    public $price;
}

我有以下集合抽象类:

abstract class Collection
{
    protected $items = [];

    public function addItem($obj, $key = null) {
        if ($key == null) {
            $this->items[] = $obj;
        } else {
            if (isset($this->items[$key])) {
                throw new KeyAlreadyExistsException("Key $key already exists.");
            } else {
                $this->items[$key] = $obj;
            }
        }
    }

    public function deleteItem($key) {
        if (isset($this->items[$key])) {
            unset($this->items[$key]);
        } else {
            throw new InvalidKeyException("key $key does not exist");
        }
    }

    public function getItem($key) {
        if (isset($this->items[$key])) {
            return $this->items[$key];
        } else {
            throw new InvalidKeyException("key $key does not exist");
        }
    }
}

我希望能够创建一个PackageModel的集合,从而创建一个集合,每当我从集合中获取一个项目时,我的代码中都会包含自动完成。

一个简单的解决方案是扩展集合并将phpdoc添加到getItem函数并像这样调用父函数:

class PackageCollection extends Collection
{
    /**
     * @return PackageModel
     */
    public function getItem($key)
    {
        parent::addItem($key);
    }
}

但是每次我扩展集合类时都需要我这样做。

有没有办法绕过它并以某种方式让它熟悉我想要的特定型号?

0 个答案:

没有答案