2012-04-14 19 views
10

Tengo un archivo llamado config.php, y tengo otros archivos que incluyen config.php. Cuando edito uno de los archivos, utilizo un objeto de config.php y autocompleta el nombre del objeto. Pero cuando intento ver funciones o variables de este objeto (con ->), no hay autocompletado. ¿Hay alguna manera de hacer que funcione?¿La finalización automática de NetBeans del archivo incluido no funciona?

Nota: Ya agregué/* @var $ myObject myType */a config.php antes de la definición del objeto. ¿Tengo que agregar esa línea a todos mis archivos incluye config.php? Eso no parece correcto.

Editar: Muestra añadida.

Directorio;

  • config.php
  • index.php
  • lib/test.class.php

config.php;

<?php 
define('ABSPATH', dirname(__FILE__)); 
include_once ABSPATH.'/lib/test.class.php'; 

/* @var $TestObj test */ 
$TestObj = new test(); 

// auto complete works here. 
$TestObj->someFunction(); 
?> 

index.php;

<?php 
include_once 'config.php'; 

// here, auto completes object name 
// not lists functions or variables after -> 
$TestObj->someFunction(); 
?> 

lib/test.class.php;

<?php 
class test { 
    public $var1; 

    public function someFunction() { 
     echo 'I am some function.'; 
     return 0; 
    } 
} 
?> 

Se está trabajando cuando agrego/* @ var $ testObj prueba */index.php pero tendrá una gran cantidad de archivos de ese tipo y tiene que haber una mejor manera de añadir esa línea para todos archivos.

+0

¿se completa automáticamente en config.php? ¿Estás seguro de que en otros archivos estás usando esta variable en el mismo ámbito y no sobrescribes con no objetos? –

+0

Sí, está trabajando en el archivo de configuración y estoy seguro de que no hay sobrescritura. Al completar object _name_, muestra config.php en la esquina superior derecha. Agregué una muestra. –

Respuesta

7

Asegúrese de que todos los archivos de su proyecto se encuentren en la ruta de inclusión del proyecto (haga clic derecho proyecto -> propiedades -> incluir ruta). Por lo general, solo existe la "ruta global de inclusión", que configura en la configuración de NetBeans (por ejemplo, para apuntar a su directorio PEAR). Agregue todos los directorios que contienen el código fuente que desea completar automáticamente a esta ruta de acceso incluida. Sugerencia: Esta ruta de acceso no tiene nada que ver con el include_path utilizado en PHP.

también en lugar de utilizar pistas en el código ciente:

/* @var $TestObj test */ 
$TestObj->... 

deben darle las fuentes poco más apidoc, por ejemplo:

<?php 
class test { 
    /** 
    * @var SomeClass 
    */ 
    public $var1; 

    /** 
    * @return int 
    */ 
    public function someFunction() { 
     echo 'I am some function.'; 
     return 0; 
    } 
} 

debido a la naturaleza dinámica de PHP los realies IDE en esta información para dar pistas correctas.

+1

Configuré la ruta de inclusión, todavía nada. Si me envía un ejemplo que está seguro de que está funcionando, puedo intentarlo para ver si el problema es sobre IDE o la técnica. –

+0

@m_poorUser: Clona https://github.com/Weltraumschaf/ebnf y abre la subcarpeta 'php' con NetBeans. Debería funcionar de la caja. La configuración para NetBenas se almacena en el directorio 'nbproject'. – Weltraumschaf

+0

Importe el proyecto, compruebe los archivos de configuración, exactamente lo mismo. Entonces probé esto; en la carpeta src/EBNF/Hay un archivo Scanner.php, se agregó esta línea al archivo; "$ Scan = new Scanner();" Luego abrí el archivo Command.php que requiere Scanner.php, escribí $ Scan->, no hay sugerencias. ¿Está mi técnica incorrecta o mi IDE está roto? –

3

De netbeans ir a tools->options Ir a la selección de editor y desde el código Finalizar seleccionar php para la sección de idiomas. Esto ampliará el menú y verá una sección Code Completion for Class Methods

Configure esa configuración seleccionando casillas de verificación en esa sección. enter image description here

Espero haber entendido esto bien. También uso netbeans y puedo autocompletarme luego de cambiar la configuración de netbeans.

+0

Ya está marcado. El autocompletar para los métodos de clase funciona en el mismo archivo, pero, si el objeto proviene de un archivo incluido, eso no funciona. Por cierto, mi versión de NetBeans es 7.0.1. Si mi ejemplo funciona en otra versión de NetBeans (tal vez en su versión), puedo verificar esta respuesta como la correcta. –

+0

Estoy usando 7.0.1 también. Tengo un archivo init que recorre las carpetas y agrega las clases necesarias y obtengo el cuadro de autocompletar para mostrarme las funciones disponibles en ctrl + espacio. La única diferencia que veo en este caso es que mis nombres de clase no tienen nombre. .php tipo de notación. Mis nombres de clase coinciden con los nombres de los archivos. – PoX

+0

Cuando se inicia NetBeans, la barra de estado dice "Escanear proyectos". Así que supongo que está buscando clases, métodos, etc. No cambié una configuración sobre eso. Traté de cambiar el nombre del archivo de clase con el nombre de la clase que contiene, no funcionó. Creo que se te puede malinterpretar la pregunta. Veo el menú de autocompletar, pero si el objeto está en el archivo en el que estoy trabajando. Si esto funciona para usted, eso significa que estoy haciendo algo realmente malo. Pruebe la muestra que envío y avíseme si el autocompletado está trabajando en el archivo index.php. –

6

vaya a Herramientas-> Opciones-> haga clic en PHP icono en la parte superior -> pestaña General -> encontrar "Global incluye el camino" -> Añadir carpeta ->

si (onLinux) {elegir/var/www; } if (onWindows) {choose c: \ path_to_htdocs o lo que sea; }

Ah, el exceso de programación para hoy .. :)

Para mí, esta terminación automática reparado y Ctrl + clic en la llamada al método.

+0

esto lo hizo por mí, muchas gracias :-) –

+0

Acabo de venir aquí para decir que, esto resuelve mi problema. :) –

Cuestiones relacionadas