Netbeans php переходит к присваиванию переменной для атрибута класса (а не объявления)

В netbeans я могу Ctrl + Щелкните имя переменной, чтобы перейти к объявлению этой переменной. Это отлично работает для обычных переменных. Однако, когда я использую его для атрибута класса, он переводит меня в начало класса к строке, например

private $myVar;

что технически корректно, но в значительной степени бесполезно. Было бы гораздо полезнее, если бы он переместил меня в строку, где переменной сначала присвоено значение, т.е.

$this->$myVar=7;

Возможно ли это? Если да, то как?

Использование NetBeans 8.0.2 в Windows 7

Ответ 1

насколько я знаю и как я пробовал, это невозможно.

Потому что переменная может быть определена один раз, но может быть инициализирована/назначена в нескольких местах. Как вы скажете, какой из них первый?

Например, я могу инициализировать переменную в методе конструктора, или у меня может быть метод setter, чтобы установить переменную без contructor. strong > , или у меня может быть совсем другой метод, а не специально конструктор, который я могу вызвать для установки значений для переменных. Так что, возможно, у меня есть все это в моем коде.

Следовательно, это невозможно.

Ответ 2

Ну, я не мог понять это с помощью языка макросов NetBeans, так как я не знаю, как захватить выбор, изменить его и выполнить поиск по регулярному выражению, что похоже на это. Я смог сделать это с помощью AutoHotKey. Идея состоит в том, чтобы сделать макрос, который делает следующее:

  • Дважды щелкните по каретке, чтобы выделить имя свойства. Netbeans не сообщал о своей позиции каретки, поэтому я должен согласиться на использование положения мыши, что хорошо.

  • Создайте следующее регулярное выражение, чтобы найти, когда propName получает присвоенное значение:

\$this\s*\->\s*propName\s*=

  1. Затем выполните поиск этого регулярного выражения и перейдите к первому найденному экземпляру.

Это не идеально, но его начало и, похоже, для меня получается. В настоящее время он не будет работать для вложенных свойств ($this->someProp->subProp) может найти someProp, но не subProp (он искал бы неправильный поиск $this->subProp), но он также должен был обрабатывать их, регулируя регулярное выражение.

Я назначил макрос Alt + Click следующим образом:

!~LButton Up::
; //save the old clipboard
oldClipboard := Clipboard
; //Sleep a while. Without this, the double click overlaps with the 
; //original click used to trigger the macro, 
; //and the wrong text is highlighted (usually the thole line)
Sleep 500
Click 2 ;
; //Copy the text
Send ^c
searchText := Clipboard
; //prefix it with this regex: "\$this\s*\-\>\s*" and add "\s*=" to the end so varName becomes \$this\s*\-\>\s*varName\s*=
searchText := "\$this\s*\-\>\s*" . searchText . "\s*="
Sleep 50
; //Toggle search dialog
Send ^f
Sleep 50
; //write the text into the form
Send %searchText% 
Loop, 2 {
Sleep 100
Send !g ; //turn regex on or off
; //since the state of whether regex is on or off is not known, cycle thru both

Sleep 100
Send {Enter}
}

; //restore the clipboard
 Clipboard := oldClipboard

return