Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.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
Php Netbeans动态属性自动完成_Php_Netbeans_Netbeans 7_Phpdoc - Fatal编程技术网

Php Netbeans动态属性自动完成

Php Netbeans动态属性自动完成,php,netbeans,netbeans-7,phpdoc,Php,Netbeans,Netbeans 7,Phpdoc,我正在编写一个框架,我有一部分将MySQL类加载到如下数组中: protected $db = array(); .... public function __construct(){ $this->db = (object)$this->db; } .... private function setupDatabases(){ if(isset($this->config["databases"])){ foreach($this->

我正在编写一个框架,我有一部分将MySQL类加载到如下数组中:

protected $db = array();
....
public function __construct(){
    $this->db   = (object)$this->db;
}
....
private function setupDatabases(){
    if(isset($this->config["databases"])){
        foreach($this->config["databases"] as $name => $data){
            $this->db->$name = $this->mysql->init($this->config);
            $this->db->$name->setConnectionParams($data);
        }
    }
}
我想在代码中添加一些phpDoc,以便auto complete将建议类中的方法列表:
$this->db->localhost->


我尝试过很多不同的方法,但都不管用。是否有某种phpDoc标记,我可以在其中执行此操作?这可能吗?

我认为您需要将$db属性本身包装到一个类中。这样,$db->localhost就变成了一个类属性,您可以通过VAR标记(
@VAR MyDbClass
)为它指定一个数据类型。

似乎您必须在父类中设置变量,才能通过代码完成。如果这可以在不预设变量的情况下完成,请回答


你有一个例子吗?好吧,一个例子会越来越大;-)为了有任何自动完成的能力,一些东西的内部元素必须被记录下来。您的示例似乎依赖于将数组强制转换为stdClass对象。我的建议是用您编写的MyDbClass替换stdClass。在MyDbClass中,您可以定义它的类属性,如$name和$localhost,并为每个属性指定一个
@var
标记来表示它的数据类型。正是这个
@var
使自动完成成为可能。我问了一个问题,这是可能的,我只是相信它不可能是完全动态的…如果您检查/测试示例源代码,您将有一个可行的解决方案。我将添加我的问题作为您的答案。。。
<?php
/**
 * This is a parent class.
 * 
 * @package Examples/doubledVars
 */
class parentExample 
{   
    public $cc;
    // notice^ <------------------------------------------------------SEE ME

    /**
     * A basic contructor
     */
    public function __construct() 
    { 
        echo '::PE Class initiated::';  
        $this -> c = 'we are value "c"  in the parent class'; 
    }
} 


/**
 * This is an Example of no doubling occuring due to __construct()
 * @see noDouble
 * 
 * @package Examples/codeCompletion
 */
class codeCompletion extends parentExample 
{  
    /**
     * @see noDouble::__construct()
     */
    public function __construct() 
    { 
        //empty constructor prevents doubling
    }


    public function getC() 
    { 
        return $this -> c; 
    } 
}



$parentExampleCC = new parentExample;

$parentExampleCC->cc = new codeCompletion;

echo $parentExampleCC->cc->getC();//CC working <------------SEE ME