在PHP中为Netbeans自动完成类型转换用户定义的对象
我知道这个问题已经被问过很多次了,但在我的例子中,这只是为了方便在Netbeans中编写代码。我一直在使用PHPExcel库,因为它有太多的方法,我不可能记住所有的方法。所以我需要netbeans的自动完成功能。问题是,netbeans只能在一定程度上自动完成 例如:-在PHP中为Netbeans自动完成类型转换用户定义的对象,php,netbeans,netbeans-7,Php,Netbeans,Netbeans 7,我知道这个问题已经被问过很多次了,但在我的例子中,这只是为了方便在Netbeans中编写代码。我一直在使用PHPExcel库,因为它有太多的方法,我不可能记住所有的方法。所以我需要netbeans的自动完成功能。问题是,netbeans只能在一定程度上自动完成 例如:- protected function _read_excel(PHPExcel $excel) { $sheet = $excel->getSheet(0); // Works perfectly fine h
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无法做到这一点,但有解决办法吗?您需要开始使用类型注释对代码进行注释,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.
}
}
如果愿意,也可以使用“内联”docblock:-
/** @var PHPExcel_Worksheet_CellIterator $cols */
或者,在最新版本的NetBeans中,顺序相反,并且少了一个*
/* @var $cold PHPExcel_Worksheet_CellIterator */
但是,您必须确保netbeans知道在哪里可以找到PHPExcel。如果您需要,我的回答会提供一些指导。您需要开始使用类型注释对代码进行注释,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.
}
}
如果愿意,也可以使用“内联”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.
}
}
谢谢@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.
}
}
嘿这真的很有帮助。谢谢我还发现,
vdoc
后跟TAB键是声明变量的快捷方式。嘿。。。。这真的很有帮助。谢谢我还发现,vdoc
后跟TAB键是声明变量的快捷方式。这样做的问题是,它只适用于netbeans,如果将来更改IDE,则必须更改所有docblock。大多数(如果不是全部的话)当前的PHP IDE都理解标准的docblocks注释格式。我明白你的意思,因为标准PHPDocs总是类型
,然后是变量
。我只需要修改vdoc
then.Update的netbeans代码模板。我刚刚尝试使用PHPDocs约定(type
varname
),但它不起作用。因此,我切换回netbeans约定(varname
type
),它工作正常。我使用的是Netbeans 7.3,正是这样的问题让我转而使用PHPStorm:)这样做的问题是,它只适用于Netbeans,如果将来更改IDE,则必须更改所有的docblock。大多数(如果不是全部的话)当前的PHP IDE都理解标准的docblocks注释格式。我明白你的意思,因为标准PHPDocs总是类型
,然后是变量
。我只需要修改vdoc
then.Update的netbeans代码模板。我刚刚尝试使用PHPDocs约定(type
varname
),但它不起作用。因此,我切换回netbeans约定(varname
type
),它工作正常。我使用的是Netbeans 7.3,正是这样的问题让我转而使用PHPStorm:)