phpstorm.meta.php, кажется, не имеет никакого эффекта - PullRequest
0 голосов
/ 30 марта 2019

Я только начинаю поиграться с phpstorm.meta.php, пытаясь улучшить подсказки кода. Документация, которую я нашел до сих пор, кажется немного тонкой, и я не смог заставить ее работать. Я использую PhpStorm 2019.1 и ниже это то, что я имею до сих пор. Нужно ли выполнять очистку кеша и перезапускать или должен работать хинтинг, как только я редактирую метафайл?

BasePB.php:

// sub-classes override this method to return the class name of entity they use
abstract protected function getEntityType()

private function entityFactory($type) : ModelEntity
{
    return new $type($this, false);
}

public function getNewEntity($options = array())
{
    $entityType = $this->getEntityType();
    $res        = $this->entityFactory($entityType);
    $res->inject($options);
    return $res;
}

.phpstorm.meta.php

<?php
namespace PHPSTORM_META
{
    override(\LTEObjects\Base\BasePB::entityFactory(0), map(['' => '@']));
}

Какой-то другой файл в классе, который расширяет BasePB

protected function getEntityType()
{
    return '\Application\Model\SomeEntity'; //extends ModelEntity
}

public function someMethod(...)
{
    // ...
    $entity = $this->getNewEntity(array(...));
    //PhpStorm recognizes $entity as a 'ModelEntity', not a 'SomeEntity'
    // ...
}

Файл метаданных находится в том же модуле, что и файл кода, а не в корне моего проекта, но даже когда я перемещаю его в корень, он не работает, и из того, что я прочитал, он должен иметь возможность храниться где угодно и все еще работать.

Проблема в том, что используемая строка слишком далека от метода, превращающего ее в класс?

...