Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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
PhpStorm CodeIgniter自定义对象自动完成_Php_Codeigniter_Autocomplete_Phpstorm - Fatal编程技术网

PhpStorm CodeIgniter自定义对象自动完成

PhpStorm CodeIgniter自定义对象自动完成,php,codeigniter,autocomplete,phpstorm,Php,Codeigniter,Autocomplete,Phpstorm,我正在控制器/视图中努力实现自定义对象的自动完成 示例代码 $this->category = $this->site_model->get_category($this->uri->uri_string()); $this->languages = $this->site_model->get_lang(); $this->slider = $this->site_model->g

我正在控制器/视图中努力实现自定义对象的自动完成

示例代码

$this->category      = $this->site_model->get_category($this->uri->uri_string());
    $this->languages     = $this->site_model->get_lang();
    $this->slider        = $this->site_model->get_slider();
    $this->static_texts  = $this->site_model->get_texts();
    $this->ads           = $this->site_model->get_ads();
    $this->currencies    = $this->site_model->get_currencies();
    $this->brands        = $this->site_model->get_brands(array('brand_visible'=>1));
    $this->goals         = $this->site_model->get_goal();
    $this->promo         = $this->site_model->get_promo();
这些变量正在运行DB查询并生成对象数组。我想生成PHP文档,以便PhpStorm能够提供自动完成功能

例如:

$this->slider
包含数组:

array(4) {
  [0]=>
  object(stdClass)#81 (3) {
    ["slide_id"]=>
    string(1) "1"
    ["slide_src"]=>
    string(13) "iamge.jpg"
    ["slide_href"]=>
    string(0) ""
  }
  [1]=>
  object(stdClass)#80 (3) {
    ["slide_id"]=>
    string(1) "2"
    ["slide_src"]=>
    string(10) "image2.jpg"
    ["slide_href"]=>
    string(0) ""
  }
  [2]=>
  object(stdClass)#79 (3) {
    ["slide_id"]=>
    string(1) "3"
    ["slide_src"]=>
    string(14) "image3.jpg"
    ["slide_href"]=>
    string(0) ""
  }
  [3]=>
  object(stdClass)#78 (3) {
    ["slide_id"]=>
    string(1) "4"
    ["slide_src"]=>
    string(13) "img.jpg"
    ["slide_href"]=>
    string(0) ""
  }
}
我应该在控制器中声明PHPDoc吗?在视图中?请帮忙

到目前为止,我是在视图中创建的,所以我不会得到未定义的变量。但我不知道该如何处理数组/对象

<?php
/**
 * @see Site::index()
 * @var array $products
 */
?>

这是我给你举的一个例子

/**
 * Create signing signature
 * @param   array   $params  Signature components
 * @param   string  $secret  Token secret (if required)
 * @param   string  $url     url for request method
 * @return  string           oAuth signature ready for use
 * @throws  Exception
 */
protected function makeSignature($url, $params, $secret = null)
{

这也可能对您有所帮助:

这些是一种属性,因为我在整个应用程序中使用它们,我需要定义这些属性的参数HPStorm在以下codeigniters结构中存在问题,phpdoc将在您设置的区域内工作,但不会在整个chainwell中工作。我可以在每个视图中放置phpdoc,但我需要更复杂的数组文档样式。我如何定义$slider是对象的数组,然后定义对象的属性呢?Phpdoc并不是设计用来下到那个级别的,它解释了顶层,并没有定义该结构内部的结构。。从技术上讲,它可以描述阵列结构。。但对于
@param
标记(据我所知),请参阅。我不确定它是否能在其他标记中工作,例如
@var
)。无论如何:PhpStorm还不支持它——你需要第三方插件(它存在——只需安装它)。。简单地说,
$this->slider
是一个
stdClass
实例数组。我不熟悉CodeIgniter(我不知道
slider
在您的类中实际上是如何声明的——这是一个真实的字段(您有类似于
公共$slider;
的内容,还是动态创建的字段;然后如何在视图文件中访问它(
$this->slider
。或者只是
$slider
)您好,是的,它被声明为var$slider。在视图中,它是通过$this->slider访问的,但一般来说,
$this->slider
可以通过
/***@var stdClass[]*/
进行类型提示,如果它正好位于
public$slider的上方;
排序行(它在控制器中,而不是视图中).现在..这仍然不会添加任何代码完成帮助,因为IDE仍然不知道
slide\u id
和其他字段--它所做的一切都停止了对未知字段的抱怨(因为
stdClass
是在“轻松”模式下处理的..因此您将不会看到关于
$this->slider[0]>slide\u id
用法的额外警告)。PHPDoc或PhpStorm都不允许您为同一类指定不同的字段集(我的意思是--您不能使在一个位置
stdClass
实例中自动完成这些字段,而在另一个位置--不同的字段集)。这里的解决方法是使用“假”类(仅由IDE使用..或者如果您想麻烦这么多,也可以由您的代码使用--但在本例中,它将是真实的类)。我在根目录中有phpstorm.php文件,其中有一些CI_控制器类用上面的注释声明,因此我获得默认库自动完成。如何在那里用属性声明Slider类?