2015-03-11 14 views
8

Sono abbastanza nuovo per OOP e PHP. Sto usando IDP PhpStorm e mi sta dando questo avviso (vedi sotto) sul mio riferimento a $width.Cosa significa "campo dichiarato dinamicamente" in questa situazione?

Warning 'Field declared dynamically'

Ecco il mio codice:

<?php 
class box { 
    private $width; 

    function __construct(){ 
     $this->width = 3; 
    } 
} 
?> 

Non ho mai visto il termine "campo" usato prima, e io non sono del tutto sicuro di quello che la frase "campo dinamico dichiarato" significa .

Sembra che questo avviso sia appena arrivato dopo l'aggiornamento di PhpStorm. Ho fatto qualcosa di male?

Inoltre, se qualcuno può spiegare brevemente cosa significa l'avvertimento con "Nota: il controllo non viene eseguito su oggetti di tipo" stdClass "o derivati"?

+0

guarda [questo] (http://blog.pepa.info/php-html-css/tools/template-undefined-field-warnings-in-phpstorm/) –

+1

Grazie Felix, questo dovrebbe aiutare molto! :) – strictlyhdmi

risposta

9

Si prega di fare File | Invalida cache ... e riavvia IDE: i tuoi indici sembrano danneggiati/non aggiornati dopo l'aggiornamento.


e io non sono del tutto sicuro di quello che la frase "campo dinamico dichiarato" si intende.

Ciò significa che il campo/proprietà non è esplicitamente dichiarato, ma si basa su __get() e __set() metodi magici di averlo lavorare.

Nel tuo caso il campo è stato dichiarato correttamente (la parte private $width;) - è solo un problema di IDE che molto spesso accade dopo un aggiornamento IDE.


Inoltre, se qualcuno può spiegare brevemente che cosa significa l'avviso "Nota: controllo non è eseguita su oggetti di tipo 'stdClass' o derivati"?

Significa esattamente che: questo controllo non viene eseguito se l'oggetto è un'istanza di stdClass o estende tale classe.

Questo è a causa della natura di stdClass - può accettare chiamate a qualsiasi campo (anche indefinito - lo definirà in modo silenzioso per voi durante il runtime) e non genererà gli errori che userebbero le classi nel caso.

Problemi correlati