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类?