我知道这个问题已被多次询问,但就我而言,在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不能这样做但是有解决方法吗?
答案 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.
}
}