PHP:一个方法的类型提示,将几个对象变量声明为返回


PHP: Type hinting for one method to declare a few object variables as return

我正在使用PHPStorm IDE。我有一个方法可以从我的 mysql db 中获取几列并返回一个包含这些值的对象。是否有可能编写 PHPDoc 注释,该注释的类型暗示特定值?这样如果我输入

self::getCommissionFromCacheOrDb($provider_id, $type, $platform)->

IDE 将向我显示一些变量,我已经在方法上方的 PHPDoc 注释中声明了这些变量。

F.E. 方法。

public static getValuesFromDb($provider_id){
            $data = self::find()->where(['provider_id' => $provider_id,
                    'revision' => '0000-00-00 00:00:00',
                    'platform' => $platform,
                    'type' => $type])
                ->select(['commission',
                        'direct_commission',
                        'super_commission',
                        'super_commission_maturity',
                        'valid_from',
                        'valid_to'])
                ->one();
            return $data;
}

我可以成像一些PHPDoc块,例如

/**
 * @return $direct_commission
 * @return @super_commission
 * @return @super_commission
 * @return @valid_from
 * @return @valid_to
 */

但不幸的是,这不起作用。是否真的必须为每个变量编写一个getter和setter,或者可以通过任何PHPDoc方式完成?

任何帮助将不胜感激。

谢谢

基本规则是:

  • 只有一个@return语句
  • 无变量名
  • 数据类型按原样(不使用 @ 前缀)

话虽如此,如果您的对象是临时创建的,则无能为力。您可能需要创建一个空类来完成代码。例如:

class Comission{
    public $commission;
    public $direct_commission;
    public $super_commission;
    public $super_commission_maturity;
    public $valid_from;
    public $valid_to;
}

。和:

/**
 * @return Comission
 */

PhpStorm 本身经常使用这个技巧来记录内置类和函数:

/**
 * Representation of date and time.
 * @link http://php.net/manual/en/class.datetime.php
 */
class DateTime implements DateTimeInterface {
    const ATOM = 'Y-m-d'TH:i:sP';
    const COOKIE = 'l, d-M-y H:i:s T';
...

我不确定 PHPStorm,但 Netbeans 接受管道符号:

/**
 * 
 * @return A|B
 */