我知道这个问题已经被问过很多次了,但在我的情况下,这只是为了方便在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不能这样做,但是有解决这个问题的方法吗?
你需要开始使用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.
}
}
如果你愿意,你也可以使用'inline' docblock:-
/** @var PHPExcel_Worksheet_CellIterator $cols */
或者,在最新版本的NetBeans中,顺序颠倒了,少了一个*
/* @var $cold PHPExcel_Worksheet_CellIterator */
但是你必须确保netbeans知道在哪里可以找到PHPExcel。如果你需要的话,我在这里的回答可以提供一些指导。
感谢@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.
}
}