2013-11-14 18 views
8

Potete aiutarmi su questo. Sono nuovo in CodeIgniter e PhpStorm, sto avendo un problema. L'ID di PhpStorm mostra un errore, anche se il codice funziona correttamente (la classe Persons (controller) non riesce a trovare la classe Person (modello)).PhpStorm CodeIgniter class not found

enter image description here

enter image description here

enter image description here

$data['persons']=$this->**person**->get_person(); = su questa sintassi da Persons classe, c'è un messaggio "Campo person non trovato in classe Persons".

Puoi chiarirmi come risolvere questo problema, ma in realtà l'output è buono e recupera i dati senza problemi solo un messaggio di avviso nella classe Persons.

+0

La classe del modello è stata denominata correttamente? CodeIgniter ha regole sul naming/casing. Inoltre, hai il costruttore lì, giusto? – minboost

+0

Il nome della mia classe modello è "Persona" mentre il mio controllore è "Persone". – Echusen

+0

Cosa stai cercando di ottenere con questo/* @var \ person $ data */'? DAs Capisco come dichiarare la variabile '$ data' come un'istanza della classe' Person'. O qualcos'altro? – LazyOne

risposta

-1

Normalmente la maggior parte delle persone aggiunge il suffisso '_model' ai nomi delle classi Model. Suggerisco che si rinomina il modello con "Person_model" chiamare il vostro modello di "person_model" come questo:

$this->load->model('person_model'); 
$this->person_model->get_person(); 

penso che si potrebbe trovare una soluzione adeguata!

+0

Ho provato a cambiare il nome della mia classe di modello in "person_model" ma non è cambiato nulla. – Echusen

+0

Penso che il problema sia su phpstorm perché ho recuperato i dati con successo. – Echusen

+0

Penso che il problema sia che la tua domanda non è chiara. Stai chiedendo un * IDE ERRORE * non un vero problema di codice, giusto? Questo non è molto chiaro. – minboost

15

La proprietà person ($this->property) non è dichiarata esplicitamente in quanto viene creata e accessibile tramite i metodi magici di PHP.

PhpStorm non ha alcun supporto speciale per il framework CodeIgniter e non è in grado di indovinare da dove proviene il numero $this->person e che tipo è.

Ma puoi aiutare IDE - solo un piccolo commento PHPDoc prima della classe reale - utilizzando il tag @property.

/** 
* @property Person $person Optional description 
*/ 
class Persons extends CI_Controller { 

... e oh magic - funziona: enter image description here

2

La risposta da LazyOne non ha funzionato per me inizialmente. Dopo alcuni test ho scoperto che il mio problema era relativo al maiuscolo/minuscolo relativo alla dichiarazione della proprietà in PHPDoc - si spera che le seguenti osservazioni possano aiutare qualcun altro. Questo è quello che devo dichiarare la mia classe del modello:

class Custom extends CI_Model {} 

Nel mio controller I caricare e utilizzare il modello per esempio nel seguente modo:

$this->load->model('Custom') 
$table = $this->Custom->get(); 

Ora, per PhpStorm per prendere questa classe correttamente I originariamente aggiunto un commento PHPDoc @property sopra una classe principale come descritto da altri (sia sopra la classe CI_Controller o il file CI_phpStrom.php separato) come questo:

* 
* @property Custom $custom 
* 

Tuttavia, questo di dn't rimuovere il problema, come il nome della variabile diventa maiuscole e minuscole in questo caso e ho dovuto scrivere:

* 
* @property Custom $Custom 
* 

per il mio codice di controllo di cui sopra per prendere la classe in modo corretto.Un'alternativa sarebbe quella di utilizzare minuscole quando si chiama funzioni (questo funziona anche se il vostro modello di dichiarazione utilizzato maiuscolo)

$this->load->model('custom') 
$table = $this->custom->get(); 

La cosa divertente tutto questo maiuscole o minuscole non importa se chiamo la mia classe del modello "Custom_model" - quindi non ha apportato modifiche se impostato la variabile di proprietà PHPDoc su $ Custom_model o $ custom_model ...

Problemi correlati