Введите определяемый пользователем объект приведения в PHP для автоматического завершения Netbeans


Я знаю, что этот вопрос задавался много раз, но в моем случае это просто для удобства при написании кодов в 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 не может этого сделать, но это есть обходной путь для этого?

Author: Coffee Junky, 2013-04-29

2 answers

Вам нужно начать комментировать свой код с помощью комментариев типа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. Мой ответ здесь дает некоторые рекомендации по этому поводу, если вам это нужно.

 3
Author: vascowhite, 2017-05-23 10:25:44

Спасибо @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.
    }
}
 0
Author: Coffee Junky, 2013-04-30 04:13:36