部分代码完成PHPStorm CodeIgniter 3

时间:2015-09-03 18:42:45

标签: php codeigniter phpstorm

(带有CodeIgniter 3的PHPStorm版本8.0.3,在Mac OS X Yosemite 10.10.3上运行)

正如标题所述,我目前正在经历部分代码完成。

起初我什么都没有,我使用以下链接添加部分部分:

  1. https://github.com/topdown/phpStorm-CC-Helpers/blob/master/README.md#using-the-my_modelsphp(这对我来说没有,并且标记为纯文本'解决方案)
  2. 我现在可以看一下$this->...的代码完成情况,从而为我提供了一些我没有选择的选项。

    我确实得到了一个“不合时宜的”。在分配$query->row_array();后使用$query = $this->db->get_where('news', array('slug' => $slug));时,来自PHPStorm的方法警告消息。因此,在这种情况下,我的代码完成功能无法正常工作(它无法找到它)。

    此类的完整代码位于下方。

    class News_model extends CI_Model
    {
        public function __construct()
        {
            $this->load->database();
        }
    
        public function get_news($slug = FALSE)
        {
            if($slug === FALSE)
            {
                $query = $this->db->get('news');
    
                return $query->result_array();
            }
    
            $query = $this->db->get_where('news', array('slug' => $slug));
    
            return $query->row_array();
        }
    }
    

    当我搜索方法' row_array'它是在'系统' > '数据库' > ' db_result.php&#39 ;.所以它是定义的,但PHPStorm不能给我代码完成

    我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

根据我的理解。

只要您遵循其中一个选项

  

选项1 =   文件>设置>目录>添加内容根>在phpStorm-CC-helpers中选择相关的目录>标记资源根

     

选项2 =   在项目窗口中右键单击External Libraries>配置PHP包含路径然后添加相关的phpStorm-CC-helper的路径

然后根据帮助者注释/CI_DB_active_record是您在致电get_where时返回的内容。确保文件/system/database/DB_active_rec.php被标记为纯文本,以便IDE可以解析它以进行自动完成。

如果您正在使用CodeIgniter 3,那么/system/database/DB_active_rec.php/CI_DB_active_record类已从CodeIgniter源中删除,因此找不到帮助器引用的/CI_DB_active_record的引用。

答案 1 :(得分:0)

我刚测试了这个,我可以确认它确实有效,它不理想,但会产生$ query var的自动完成。

我在项目的路线中使用了这个。 https://gist.github.com/gentoid/4353692

然后你必须这样做代码:

public function index($slug)
{
    /** @var CI_DB_result $query */
    $query = $this->db->get();

    //this will now produce auto complete in PHPStorm because 
    //it knows that object the $query var contains.
    //$query->
}

你也可以这样做

/**
 * @return CI_DB_result
 */
public function getData()
{
    return $this->db->get();
}

public function test()
{
    $query = $this->getData();

    //this will now produce auto complete in PHPStorm because 
    //it knows that object the $query var contains.
    //$query->
}