php - tipos - ejemplos de clases atributos y metodos en java
netbeans php va a la asignaciĆ³n de variable para el atributo de clase(en lugar de declaraciĆ³n) (2)
En netbeans, puedo Ctrl + clic en un nombre de variable para saltar a la declaración de esa variable. Esto funciona muy bien para las variables normales. Sin embargo, cuando lo uso para un atributo de clase, me salta a la parte superior de la clase a una línea como
private $myVar;
que es técnicamente correcto, pero bastante inútil. Sería mucho más útil si me llevara a la línea donde a la variable se le asignó primero un valor, es decir,
$this->$myVar=7;
es posible? ¿Si es así, cómo?
Usando NetBeans 8.0.2 en Windows 7
por lo que sé y como lo he intentado, esto no es posible.
Porque, una variable se puede definir una vez, pero se puede inicializar / asignar en varios lugares. ¿Cómo dirás cuál es el primero ?
Por ejemplo, puedo estar inicializando la variable en el método constructor o puedo tener un método setter para establecer la variable sin el contructor también, o puedo tener un método completamente diferente, no específicamente el constructor , al que puedo llamar establecer valores para las variables. Entonces, puede haber una posibilidad de que tenga todo esto en mi código.
Por lo tanto, no es posible.
Bueno, no pude resolverlo con el lenguaje macro de NetBeans, ya que no sé cómo tomar la selección, modificarla y hacer una búsqueda de expresiones regulares, que parece que es necesaria. Pude hacerlo con AutoHotKey . La idea es crear una macro que haga lo siguiente:
Haga doble clic en la posición de intercalación para resaltar el nombre de la propiedad. Netbeans no informaba su posición de intercalación, por lo que tengo que conformarme con usar la posición del mouse, lo cual está bien.
Cree la siguiente expresión regular para localizar cuando
propName
obtiene un valor asignado:
/$this/s*/->/s*propName/s*=
- Luego, haz una búsqueda de esa expresión regular y ve a la primera instancia encontrada.
No es perfecto, pero es un comienzo y parece estar funcionando para mí. Actualmente no funcionará para las propiedades anidadas ( $this->someProp->subProp
) podría ubicar someProp
pero no subProp
(buscaría incorrectamente $this->subProp
) pero debería ser capaz de manejarlas también ajustando la expresión regular .
He asignado la macro a Alt + clic en lo siguiente:
!~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