有人可以告诉我为什么当我使用getInstance()
方法而不是新的ClassName时,自动完成功能不起作用吗?
以下是该类的getInstance()
方法:
// Define The Namespace For Our Library
namespace JUnstoppable;
class JUnstoppable
{
// Instance Of The Class
protected static $instance = array ();
public static function getInstance ($forPlatformName = 'joomla')
{
$forPlatformName = strtolower($forPlatformName);
if (!isset(static::$instance[$forPlatformName]))
{
static::$instance[$forPlatformName] = new \JUnstoppable\JUnstoppable($forPlatformName);
}
return static::$instance[$forPlatformName];
}
public function __construct ($platformName = 'joomla')
{
}
public function doExecute ($test = 'lalala')
{
return $test;
}
}
答案 0 :(得分:1)
当我使用
getInstance()
方法而不是新的ClassName时,有人可以告诉我为什么自动完成不起作用吗?
那是因为IDE不知道你的$instance
静态属性中有什么内容,因此无法弄清getInstance()
返回的内容。从IDE的角度来看,它只是普通数组(任何类型的元素)而不是JUnstoppable
个实例的数组。
您可以在$test
上放置插入符号并调用View | Quick Documentation
以查看IDE对该变量的了解。如果它没有说JUnstoppable
那么就没有奇迹。
只需通过 PHPDoc的 getInstance()
标记为@return
方法的返回值添加正确的类型提示:
/**
* My super method.
*
* @param string $forPlatformName Optional parameter description
* @return JUnstoppable
*/
public static function getInstance ($forPlatformName = 'joomla')
您可以指定具体类(在这种情况下为JUnstoppable
)..或static
如果子类也将使用此方法,它们将返回不同的实例。
或者(或更好地说:另外)你可以输入提示$instance
属性,IDE将用它来确定getInstance()
方法返回的内容:
/** @var JUnstoppable[] Instance Of The Class */
protected static $instance = array ();