2

我知道这个问题已经被问过很多次了,但就我而言,这只是为了方便在 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 无法做到这一点,但有解决方法吗?

4

2 回答 2

4

您需要开始使用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。如果您需要,我的回答在这里提供了一些指导。

于 2013-04-29T05:17:41.113 回答
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.
    }
}
于 2013-04-30T04:13:36.767 回答