我的具体案例围绕fakerphp/faker 展开,但我想这个案例可以用于其他库。
如果为 Faker 创建一个带有“提供者”的库,则基本上是创建一个具有某些方法的类,这些方法返回生成的假数据:
namespace Faker\Provider;
class Book extends \Faker\Provider\Base
{
public function title($nbWords = 5): string
{
$sentence = $this->generator->sentence($nbWords);
return substr($sentence, 0, strlen($sentence) - 1);
}
public function ISBN(): string
{
return $this->generator->ean13();
}
}
要将此提供程序添加到 Faker,请调用$faker->addProvider(new \Faker\Provider\Book($faker));
.
现在问题来了。
在实际使用这个新的提供者方法时,需要通过 Faker 对象,该对象通过使用__call()
.
因此,当调用 时$faker->ISBN()
,PhpStorm 将不知道该方法ISBN()
存在并且它返回一个字符串。
在创建这样的库时,有没有办法通过注释或存根或其他方式提供这种自动完成(甚至可能是静态分析提示)?