我正在使用IntelliJ IDEA 12使用CodeIgniter框架开发PHP Web应用程序。由于CI实例化对象和方法的方式,IDEA认为它们在被调用时不存在:

如您所见,在我尝试使用的每个CodeIgniter类/方法下,我都会遇到那些令人讨厌的橙色弯曲。

这是CI_Controller类的代码,使他们对如何创建对象有一些了解:

class CI_Controller {

    private static $instance;

    /**
     * Constructor
     */
    public function __construct()
    {
        self::$instance =& $this;

        // Assign all the class objects that were instantiated by the
        // bootstrap file (CodeIgniter.php) to local class variables
        // so that CI can run as one big super object.
        foreach (is_loaded() as $var => $class)
        {
            $this->$var =& load_class($class);
        }

        $this->load =& load_class('Loader', 'core');

        $this->load->initialize();

        log_message('debug', "Controller Class Initialized");
    }

    public static function &get_instance()
    {
        return self::$instance;
    }
}

有什么方法可以使IntelliJ IDEA忽略这些错误(但不能忽略其他错误),或者让它自己查找对象?

注意:我曾经使用PHPStorm,这是在IntelliJ IDEA平台上构建的PHP IDE,它在CodeIgniter上也做同样的事情。

最佳答案

我通过遵循this guide解决了这个问题。它旨在用于PHPStorm,但也适用于IntelliJ IDEA(可能也适用于WebStorm!)。实际上,这非常简单。基本回顾:

  • 在我的项目根目录中保存了以下PHP代码。它基本上只是一个PHPDoc注释:


  • /**
    * -------------不要将此文件上传到实时服务器---------------------
    *
    *在phpStorm中为CodeIgniter实现代码完成
    * phpStorm为所有类构造建立索引,因此,如果此文件在项目中,则将其加载。
    * ------------------------------------------------- ------------------
    *将以下文件放入phpStorm中的CI项目
    *您可以将其放在项目根目录中,并且phpStorm会加载它。
    *(如果phpStorm没有加载,请尝试关闭项目并重新打开)
    *
    *在系统/核心/下
    *右键单击Controller.php并将“标记为纯文本”设置为
    *对Model.php做同样的事情
    * ------------------------------------------------- ------------------
    *这样,对于此简单的代码完成层,无需编辑CI核心文件。
    *
    * PHP版本5
    *
    *许可:GPL http://www.gnu.org/copyleft/gpl.html
    *
    *创建的2012年1月28日下午11:06
    *
    * @类别
    * @package CodeIgniter CI_phpStorm.php
    * @作者Jeff Behnke
    * @copyright 2009-11 Valid-Webs.com
    * @license GPL http://www.gnu.org/copyleft/gpl.html
    * @版本2012.01.28
    */

    /**
    * @property CI_DB_active_record $ db这是独立于平台的基本Active Record实现类。
    * @属性CI_DB_forge $ dbforge数据库实用程序类
    * @property CI_Benchmark $ benchmark此类可用于标记点并计算它们之间的时间差。内存消耗也可以显示。
    * @property CI_Calendar $ calendar此类可创建日历
    * @property CI_Cart $ cart购物车类
    * @property CI_Config $ config此类包含使配置文件得以管理的功能
    * @property CI_Controller $ controller此类对象是将分配给CodeIgniter中的每个库的父类(super class)。
    * @property CI_Email $ email允许使用Mail,Sendmail或SMTP发送电子邮件。
    * @property CI_Encrypt $ encrypt使用XOR哈希和Mcrypt提供双向 key 编码
    * @property CI_Exceptions $ exceptions异常类
    * @property CI_Form_validation $ form_validation表单验证类
    * @属性CI_Ftp $ ftp FTP类
    * @property CI_Hooks $ hooks提供了一种扩展基础系统而不会被黑客入侵的机制。
    * @property CI_Image_lib $ image_lib图像处理类
    * @property CI_Input $ input预处理全局输入数据以确保安全
    * @property CI_Lang $ lang语言类(class)
    * @property CI_Loader $ load加载 View 和文件
    * @property CI_Log $ log日志记录类
    * @property CI_Model $ model CodeIgniter模型类
    * @property CI_Output $ output负责将最终输出发送到浏览器
    * @property CI_Pagination $ pagination分页类
    * @property CI_Parser $ parser解析指定模板 View 中包含的伪变量,将其替换为第二个参数中的数据
    * @property CI_Profiler $ profiler此类可让您显示基准,查询和其他数据,以帮助调试和优化。
    * @property CI_Router $ router解析URI并确定路由
    * @property CI_Session $ session session 类
    * @property CI_Sha1 $ sha1使用安全哈希算法提供160位哈希
    * @property CI_Table $ table HTML表生成让您手动创建表或从数据库结果对象或数组创建表。
    * @property CI_Trackback $ trackback引用发送/接收类
    * @property CI_Typography $ typography打印术类
    * @property CI_Unit_test $ unit_test简单测试类
    * @property CI_Upload $上传文件上传类
    * @property CI_URI $ uri解析URI并确定路由
    * @property CI_User_agent $ user_agent标识浏览代理的平台,浏览器,机器人或移动设备
    * @property CI_Validation $ validation//已死
    * @property CI_Xmlrpc $ xmlrpc XML-RPC请求处理程序类
    * @property CI_Xmlrpcs $ xmlrpcs XML-RPC服务器类
    * @property CI_Zip $ zip Zip压缩类
    * @property CI_Javascript $ javascript Javascript类
    * @property CI_Jquery $ jquery jQuery类
    * @property CI_Utf8 $ utf8提供对UTF-8环境的支持
    * @property CI_Security $ security安全类,xss,csrf等...
    */
    类CI_Controller {}

    /**
    * @property CI_DB_active_record $ db这是独立于平台的基本Active Record实现类。
    * @属性CI_DB_forge $ dbforge数据库实用程序类
    * @property CI_Benchmark $ benchmark此类可用于标记点并计算它们之间的时间差。内存消耗也可以显示。
    * @property CI_Calendar $ calendar此类可创建日历
    * @property CI_Cart $ cart购物车类
    * @property CI_Config $ config此类包含使配置文件得以管理的功能
    * @property CI_Controller $ controller此类对象是将分配给CodeIgniter中的每个库的父类(super class)。
    * @property CI_Email $ email允许使用Mail,Sendmail或SMTP发送电子邮件。
    * @property CI_Encrypt $ encrypt使用XOR哈希和Mcrypt提供双向 key 编码
    * @property CI_Exceptions $ exceptions异常类
    * @property CI_Form_validation $ form_validation表单验证类
    * @属性CI_Ftp $ ftp FTP类
    * @property CI_Hooks $ hooks提供了一种扩展基础系统而不会被黑客入侵的机制。
    * @property CI_Image_lib $ image_lib图像处理类
    * @property CI_Input $ input预处理全局输入数据以确保安全
    * @property CI_Lang $ lang语言类(class)
    * @property CI_Loader $ load加载 View 和文件
    * @property CI_Log $ log日志记录类
    * @property CI_Model $ model CodeIgniter模型类
    * @property CI_Output $ output负责将最终输出发送到浏览器
    * @property CI_Pagination $ pagination分页类
    * @property CI_Parser $ parser解析指定模板 View 中包含的伪变量,将其替换为第二个参数中的数据
    * @property CI_Profiler $ profiler此类可让您显示基准,查询和其他数据,以帮助调试和优化。
    * @property CI_Router $ router解析URI并确定路由
    * @property CI_Session $ session session 类
    * @property CI_Sha1 $ sha1使用安全哈希算法提供160位哈希
    * @property CI_Table $ table HTML表生成让您手动创建表或从数据库结果对象或数组创建表。
    * @property CI_Trackback $ trackback引用发送/接收类
    * @property CI_Typography $ typography打印术类
    * @property CI_Unit_test $ unit_test简单测试类
    * @property CI_Upload $上传文件上传类
    * @property CI_URI $ uri解析URI并确定路由
    * @property CI_User_agent $ user_agent标识浏览代理的平台,浏览器,机器人或移动设备
    * @property CI_Validation $ validation//已死
    * @property CI_Xmlrpc $ xmlrpc XML-RPC请求处理程序类
    * @property CI_Xmlrpcs $ xmlrpcs XML-RPC服务器类
    * @property CI_Zip $ zip Zip压缩类
    * @property CI_Javascript $ javascript Javascript类
    * @property CI_Jquery $ jquery jQuery类
    * @property CI_Utf8 $ utf8提供对UTF-8环境的支持
    * @property CI_Security $ security安全类,xss,csrf等...
    */
    类CI_Model {}

    2.在IntelliJ IDEA中找到/system/core/controller.php/system/core/model.php,然后右键单击->标记为纯文本。

    3.完成!它工作得很好,没有更多的错误错误,并且代码完成!

    10-07 19:31
    查看更多