热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PhpStorm动态类方法警告

如何解决《PhpStorm动态类方法警告》经验,为你挑选了1个好方法。

我试图让PhpStorm停止警告我关于动态初始化类的方法.

这是我的方法的代码:

function create_or_update_objects ($object_name, $method_callbacks = []) {
    // grab duplicate field names used to check for existing objects
    $field = new Field();
    $duplicate_field_names = $field->fetch_duplicate_names();

    foreach ($_SESSION['objects'] as $session_object) {
        $object = new $object_name();

        // set object properties
        foreach ($session_object as $key => $value) {
            if (property_exists($object, $this->data[$key]['name'])) {
                $object->{$this->data[$key]['name']} = $value;
            }
            else {
                $object->fields[$this->data[$key]['name']] = $value;
            }
        }

        // perform object method callbacks
        foreach ($method_callbacks as $method_callback) {
            $object->$method_callback();
        }

        if ($object->exists_by_duplicate_fields($duplicate_field_names)) {
            // object already exists, update by data field names
            $object->set_id_by_duplicate_fields($duplicate_field_names);
            $object->update_by_data_names($this->data);
        }
        else {
            // object does not exist, create it
            $object->create();
        }
    }
}

PhpStorm正在向我发出有关未找到的以下方法的警告:

exists_by_duplicate_fields

set_id_by_duplicate_fields

update_by_data_names

创建

我知道我可以使用/** @noinspection PhpUndefinedMethodInspection */上面的每一行 - 但我想知道是否有更好的方法来做到这一点?



1> Axalix..:

我会怎么做:

    创建一个抽象类.

    在抽象类中添加缺少的方法.它们应该是抽象的,或者以正确的回报进行实际实施.

    上面的行$object = new $object_name();添加了这个PHPDoc指令: /** @var PARENT_CLASS $object */- 只需替换PARENT_CLASS为真正的类

例:

abstract class MyParent {
   public $fields;

   abstract public function exists_by_duplicate_fields($duplicate_field_names);
   abstract public function set_id_by_duplicate_fields($duplicate_field_names);
   abstract public function update_by_data_names($data);
   abstract public function create();
}

然后在代码中的某个地方:

/** @var MyParent $object */
$object = new $object_name();

笔记:

    你也可以在/** @var Field[] */上面添加public $fields;它应该帮助PhpStorm了解$fields每次使用它时如何对待成员.

    如果所有具有名称的类$object_name实际上都可以从a继承,那将是很好的PARENT_CLASS.

    如果需要,您可以使用实现替换抽象方法.


推荐阅读
  • 可空类型可空类型主要用于参数类型声明和函数返回值声明。主要的两种形式如下: ... [详细]
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
  • 时域|波形_语音处理基于matlab GUI音频数据处理含Matlab源码 1734期
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了语音处理基于matlabGUI音频数据处理含Matlab源码1734期相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了一种在PHP中对二维数组根据某个字段进行排序的方法,以年龄字段为例,按照倒序的方式进行排序,并给出了具体的代码实现。 ... [详细]
  • 本文总结和分析了JDK核心源码(2)中lang包下的基础知识,包括常用的对象类型包和异常类型包。在对象类型包中,介绍了Object类、String类、StringBuilder类、StringBuffer类和基本元素的包装类。在异常类型包中,介绍了Throwable类、Error类型和Exception类型。这些基础知识对于理解和使用JDK核心源码具有重要意义。 ... [详细]
  • php缓存ri,浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
    thinkPHP的F方法只能用于缓存简单数据类型,不支持有效期和缓存对象。S()缓存方法支持有效期,又称动态缓存方法。本文是小编日常整理有关thinkp ... [详细]
  • 本文介绍了如何对PHP二维数组进行排序以及如何获取最大值。同时还提到了在数据分析系统中使用排序的实例,以及如何统计角色等级和创建角色总数。 ... [详细]
  • 本文介绍了在实现了System.Collections.Generic.IDictionary接口的泛型字典类中如何使用foreach循环来枚举字典中的键值对。同时还讨论了非泛型字典类和泛型字典类在foreach循环中使用的不同类型,以及使用KeyValuePair类型在foreach循环中枚举泛型字典类的优势。阅读本文可以帮助您更好地理解泛型字典类的使用和性能优化。 ... [详细]
  • 工作经验谈之-让百度地图API调用数据库内容 及详解
    这段时间,所在项目中要用到的一个模块,就是让数据库中的内容在百度地图上展现出来,如经纬度。主要实现以下几点功能:1.读取数据库中的经纬度值在百度上标注出来。2.点击标注弹出对应信息。3 ... [详细]
  • 使用这个技巧要达到的目标:一般来说,模型和控制器你都不会有相同的类名字。让我先创建一个取名为post的model。classPostextendsModel{}现在 ... [详细]
  • 开发笔记:图像识别基于主成分分析算法实现人脸二维码识别
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了图像识别基于主成分分析算法实现人脸二维码识别相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 渗透测试基础bypass绕过阻挡我们的WAF(下)
    渗透测试基础-bypass ... [详细]
  • 由于同源策略的限制,满足同源的脚本才可以获取资源。虽然这样有助于保障网络安全,但另一方面也限制了资源的使用。那么如何实现跨域呢,以下是实现跨域的一些方法。 ... [详细]
author-avatar
阳光美女新干线-
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有