Php Netbeans动态属性自动完成
我正在编写一个框架,我有一部分将MySQL类加载到如下数组中: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->
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