Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:键入暗示一个方法将几个对象变量声明为返回_Php_Phpstorm_Type Hinting - Fatal编程技术网

PHP:键入暗示一个方法将几个对象变量声明为返回

PHP:键入暗示一个方法将几个对象变量声明为返回,php,phpstorm,type-hinting,Php,Phpstorm,Type Hinting,我正在使用PHPStorm IDE。我有一个方法,它从mysql数据库中获取一些列,并返回一个包含这些值的对象。有没有可能写一个PHPDoc注释,它是暗示特定值的类型?所以如果我打字 self::getCommissionFromCacheOrDb($provider\u id,$type,$platform)-> IDE将向我显示几个变量,我已经在方法上方的PHPDoc注释中声明了这些变量 public static getValuesFromDb($provider_id){

我正在使用PHPStorm IDE。我有一个方法,它从mysql数据库中获取一些列,并返回一个包含这些值的对象。有没有可能写一个PHPDoc注释,它是暗示特定值的类型?所以如果我打字

self::getCommissionFromCacheOrDb($provider\u id,$type,$platform)->

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

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;
}
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方式来完成

任何帮助都将不胜感激


谢谢

我不确定PHPStorm,但Netbeans接受管道标志:

/**
 * 
 * @return A|B
 */
基本规则是:

  • 只有一个
    @return
    语句
  • 没有变量名
  • 数据类型按原样(不使用@前缀)
也就是说,如果您的对象是临时创建的,那么您就无能为力了。您可能需要创建一个空类来完成代码。e、 g:

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';
...

php doc comment->/**@var ClassName$object*/我已经尝试过了,但之后没有类型提示。这里有f.e.类型提示,如果我写
@return array | null | \yii\db\ActiveRecord
,那么返回可以是array或null,并显示名称空间类的属性。但是我想要一个带有几个属性的简单对象。
null
不是一个类型,而是一个值(或者说它缺少属性)。我想您应该创建一个
false
未使用的类,并将其用于PHPDoc中的返回值。我同意这种类型。但我的问题是关于字体暗示。你有什么线索吗?我的想法和阿尔瓦罗的一样。类不需要在项目本身中。好的,这样它就可以工作了。非常感谢。但是感觉有点脏。可能最好只为这几个属性创建一个单独的模型(MVC模式)。你觉得呢?我想这取决于你的整体设计。自动魔术的东西是可怕的,但它不能解决所有的需要(否则,它会是愚蠢的手动操作)。我个人更喜欢代码智能而不是少打字,因为我的打字技能比我的记忆力好。