在PHP中输入用于Netbeans自动完成的用户定义对象

时间:2013-04-29 04:46:25

标签: php netbeans netbeans-7

我知道这个问题已被多次询问,但就我而言,在Netbeans中编写代码时只是为了方便起见。我一直在使用PHPExcel库,因为它有太多的方法,我不可能记住所有这些。所以我需要netbeans的自动完成功能。问题是,netbeans只能在一定程度上自动完成。

例如: -

protected function _read_excel(PHPExcel $excel)
{
    $sheet = $excel->getSheet(0);   // Works perfectly fine here because I type cast the argument
    $rows = $sheet->getRowIterator(); // Works fine here too
    foreach($rows as $row) 
    {
        $cols = $row->getCellIterator(); // By the time I reach here, Netbeans stops auto-completing. Probably due to Netbeans don't know what class it is.
    }
}

如果我能做到这一点: -

$cols = (PHPExcel_Worksheet_CellIterator) $row->getCellIterator();

我知道PHP不能这样做但是有解决方法吗?

2 个答案:

答案 0 :(得分:3)

您需要使用PHPDoc类型注释开始评论您的代码,Netbeans将使用它们进行自动完成。

protected function _read_excel(PHPExcel $excel)
{
    $sheet = $excel->getSheet(0);   // Works perfectly fine here because I type cast the argument
    $rows = $sheet->getRowIterator(); // Works fine here too
    foreach($rows as $row) 
    {
        /**
         * @var PHPExcel_Worksheet_CellIterator $cols
         */
        $cols = $row->getCellIterator(); // Now netbeans will know what class it is.
    }
}

如果您愿意,也可以使用“内联”文档块: -

/** @var PHPExcel_Worksheet_CellIterator $cols */

或者,在最新版本的NetBeans中,订单显示为反转且少了一个*

/* @var $cold PHPExcel_Worksheet_CellIterator */

但是,您必须确保netbeans知道在哪里可以找到PHPExcel。如果您需要,我的回答here会给出一些指导。

答案 1 :(得分:0)

感谢@vascowhite启发我。

因此,为了其他人,在注释中声明变量(在Netbeans中)只需键入vdoc,然后键入TAB键。

基于此,格式实际上是@var $variablename ClassName。 此外,对于foreach循环,您必须在循环之外声明变量。

示例:

protected function _read_excel(PHPExcel $excel)
{
    $sheet = $excel->getSheet(0);   // Works perfectly fine here because I type cast the argument
    $rows = $sheet->getRowIterator(); // Works fine here too
    /* @var $row PHPExcel_Worksheet_Row */
    foreach ( $rows as $row )
    {
        /* @var $cols PHPExcel_Worksheet_CellIterator */
        $cols = $row->getCellIterator(); // Now netbeans will know what class it is.
    }
}