2012-04-14 22 views
10

Ho un file chiamato config.php e ho altri file include config.php. Quando si modifica uno dei file, utilizzo un oggetto da config.php e autocompleta il nome dell'oggetto. Ma quando provo a vedere funzioni o variabili di questo oggetto (con ->), non c'è il completamento automatico. C'è un modo per farlo funzionare?Il completamento automatico NetBeans dal file incluso non funziona?

Nota: ho già aggiunto/* @var $ myObject myType */a config.php prima della definizione dell'oggetto. Devo aggiungere quella linea a ogni mio file include config.php? Non sembra giusto.

Modifica: campione aggiunto.

Directory;

  • 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; 
    } 
} 
?> 

Si sta lavorando quando aggiungo/* @var prova $ TestObj */a index.php, ma avrò un sacco di file del genere e ci deve essere un modo migliore di aggiungere quella linea a tutti File.

+0

si completa automaticamente in config.php? Sei sicuro che in altri file stai usando questa variabile nello stesso scope e non la sovrascrivi con non-object? –

+0

Sì, sta funzionando nel file di configurazione e sono sicuro che non vi è alcuna sovrascrittura. Al termine dell'oggetto _name_, mostra config.php nell'angolo in alto a destra. Ho aggiunto un campione. –

risposta

7

Fai in modo che tutti i file del tuo progetto si trovino nel percorso di inclusione del progetto (progetto righ click -> proprietà -> include percorso). Di solito c'è solo il "percorso di inclusione globale", che si configura nelle impostazioni di NetBeans (ad esempio, per puntare alla propria directory PEAR). Aggiungi tutte le directory che contengono il codice sorgente per il completamento automatico per questo percorso di inclusione. Suggerimento: questo include il percorso non ha nulla a che fare con l'include_path usato in PHP stesso.

Inoltre, invece di utilizzare i suggerimenti nel codice ciente:

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

si dovrebbe dare le fonti un po 'apidoc, ad esempio:

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

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

a causa della natura dinamica di PHP i realies IDE su questa informazione per dare suggerimenti giusti.

+1

Ho impostato il percorso di inclusione, ancora nulla. Se mi mandi un esempio che sei sicuro che funzioni, posso provarlo per vedere se il problema riguarda IDE o tecnica. –

+0

@m_poorUser: clona https://github.com/Weltraumschaf/ebnf e apri la sottocartella 'php' con NetBeans. Dovrebbe funzionare fuori dalla scatola. La configurazione per NetBenas è memorizzata nella directory 'nbproject'. – Weltraumschaf

+0

Importare il progetto, controllato i file di configurazione, esattamente lo stesso. Allora ho provato questo; nella cartella src/EBNF/C'è un file Scanner.php, ha aggiunto questa riga al file; "$ Scan = new Scanner();" Poi ho aperto il file Command.php che richiede Scanner.php, ho scritto $ Scan->, non ci sono suggerimenti. La mia tecnica è sbagliata o il mio IDE è rotto? –

3

Da netbeans andare a tools->options Passare alla selezione dell'editor e dal codice Completamento selezionare php per la sezione lingue. Questo espande il menu e vedrai una sezione Code Completion for Class Methods

Impostare tale configurazione selezionando le caselle di controllo in quella sezione. enter image description here

Spero di aver capito bene. Uso anche netbeans e riesco a completare automaticamente dopo aver modificato le impostazioni di netbeans.

+0

È già controllato. Il completamento automatico per i metodi di classe funziona sullo stesso file, ma, se l'oggetto proviene da un file incluso, non funziona. A proposito la mia versione NetBeans è 7.0.1. Se il mio esempio funziona su un'altra versione di NetBeans (forse sulla tua versione), posso controllare questa risposta come corretta. –

+0

Anche io sto usando 7.0.1. Ho un file init che scorre le cartelle e aggiunge le classi necessarie e ottengo la casella di completamento automatico per mostrarmi le funzioni disponibili su Ctrl + Spazio. L'unica differenza che vedo in questo caso è che i miei nomi di classe non hanno un nome. .php tipo di notazione. I nomi delle mie classi corrispondono ai nomi dei file. – PoX

+0

All'avvio di NetBeans, la barra di stato dice "Progetti di scansione". Quindi presumo che stia cercando classi, metodi, ecc. Non ho cambiato le impostazioni in merito. Ho provato a rinominare il file di classe con il nome della classe che contiene, non ha funzionato. Penso che potresti essere frainteso alla domanda. Vedo il menu di completamento automatico, ma, se solo l'oggetto è nel file su cui sto lavorando. Se questo funziona per te, significa che sto facendo qualcosa di veramente sbagliato. Si prega di provare l'esempio che invio e fammi sapere se il completamento automatico sta lavorando su file index.php. –

6

Vai a Strumenti> Opzioni> cliccare su PHP icona in alto -> scheda Generale -> trova "Global include il percorso" -> Aggiungi cartella ->

se (onLinux) {scegliere/var/www; } if (onWindows) {scegli c: \ path_to_htdocs o qualsiasi altra cosa; }

Ah, troppo programmazione per oggi .. :)

Per me, questo autocompletamento riparato e Ctrl + click sulla chiamata di metodo.

+0

questo lo ha fatto per me, grazie mille :-) –

+0

Sono appena venuto qui per dire che, questo risolve il mio problema. :) –

Problemi correlati