在为PDO编写轻量级包装器时,我注意到PDO :: Query方法似乎有4种不同的签名可供根据文档使用:
http://php.net/manual/en/pdo.query.php
PHP中不允许进行方法重载,似乎PHPDoc不喜欢这种情况,至少在使用PHPStorm 8.x和以下代码时(我为此示例仅提供了两个签名):
<?php
/**
* @method \PDOStatement query(string $statement)
* @method \PDOStatement query(string $statement, int $PDO::FETCH_COLUMN, int $colno)
*/
class Database
{
private $PDO;
public function __construct($dsn, $user = null, $pass = null, $options = null)
{
$this->PDO = new \PDO($dsn, $user, $pass, $options);
}
public function __call($method, $arguments)
{
return call_user_func_array(array(&$this->PDO, $method), $arguments);
}
}
当然,第二个@method语句在PHPStorm中以红色突出显示,并出现以下错误:
&#34;此类中已定义同名的方法&#34;
是否有人建议如何解决这个问题?