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*=
- Затем выполните поиск этого регулярного выражения и перейдите к первому найденному экземпляру.
Это не идеально, но его начало и, похоже, для меня получается. В настоящее время он не будет работать для вложенных свойств ($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