2016-10-18 129 views
0

在下面的代码中,@return加下划线为红色。我希望它能够返回一个接口,因为这是所有不同的供应商适配器实现的。为什么PHP代码中的PHPDoc错误通过此代码?

/** 
* VendorFactory constructor. 
* @param Model $model 
* @return \Traders\Interfaces\VendorAdapterInterface 
*/ 
public function __construct(Model $model) 
{ 
    return $this->createAdapter($model); 
} 

这是createAdapter的代码,它没有带红色下划线的@return。

/** 
* @param Model $model 
* @return \Traders\Interfaces\VendorAdapterInterface 
*/ 
public function createAdapter(Model $model) 
{ 
    $type = str_replace('App\Models\\', '', get_class($model)).'s'; 
    $fqcn = '\Traders\Adapters\\'.$type.'\\'.ucfirst(strtolower($model->name)); 
    return new $fqcn($model); 
} 

我试图做/ **的docblock,让PHPStorm输入什么它认为是返回值,它只是不断给我

@return mixed 
+0

因为'$ fqcn'是一个变量,在这种情况下。你实际上并没有给它一个具体的课程。忽略风暴并保持原样或创建工厂。 – Andrew

+4

在构造函数中等待..'return'? – Pete

+0

感谢Pete,这不应该是构造函数而是初始化方法。 –

回答

1

您的问题是在构造函数中return。 构造函数不接受返回值,它们在实例化该类的实例时执行。

+0

感谢我的坏不应该是在构造函数应该已经初始化的方法:) –

+1

很高兴帮助!公平起见,我认为在技术上你可以在__construct函数上设置返回值(因为它们与普通函数一样),并像$ ret = $ obj - > __ construct()那样使用它们。无论如何,这被认为是一种不好的做法,并且没有人接受。 –

相关问题