PhpStorm没有在array_map

时间:2017-12-31 07:23:10

标签: php phpstorm code-completion

我没有获得此代码的代码提示:

enter image description here

get_indexes的PHPDoc我认为已经正确完成,NetBeans似乎理解它并正确显示提示:

/**
 *  Get Index
 * 
 * @global object $wpdb
 * @param String $extension_table_name
 * @return \ZRDN\Recipe[]
 */
public static function get_indexes($extension_table_name) {
    global $wpdb;
    $db_name = $wpdb->prefix . $extension_table_name;
    $selectStatement = "SELECT * FROM `{$db_name}`";
    $recipe_indexes = $wpdb->get_results($selectStatement);

    return $recipe_indexes;
}

Recipe在同一名称空间下的同一文件中定义:

class Recipe {
   /**
    * @var int
    */
   public $recipe_id;

   /**
    * @var int
    */
   public $post_id;
...

任何想法可能是什么问题?

1 个答案:

答案 0 :(得分:5)

如果您知道$recipes始终包含Recipe类型的对象,则将其用作地图函数的$recipe参数的类型:

$post_ids = array_map(function(Recipe $recipe) {
    return $recipe->recipe_id;
}, $recipes);

这样,PhpStorm(和其他IDE)可以帮助您完成自动完成,并且PHP解释器在遇到错误类型的$recipes中的值时会触发致命错误。