2014-08-30 11 views
37

Mam zapaloną bibliotekę danych w moim folderze biblioteki kodów.Dostęp do PhpStorm Field za pośrednictwem magicznej metody

trochę kodu z biblioteki

class Datatables 
{ 
    /** 
    * Global container variables for chained argument results 
    * 
    */ 
    protected $ci; 
    protected $table; 
    protected $distinct; 
    protected $group_by; 
    protected $select   = array(); 
    protected $joins   = array(); 
    protected $columns  = array(); 
    protected $where   = array(); 
    protected $filter   = array(); 
    protected $add_columns = array(); 
    protected $edit_columns = array(); 
    protected $unset_columns = array(); 

    /** 
    * Copies an instance of CI 
    */ 
    public function __construct() 
    { 
     $this->ci =& get_instance(); 
    } 

i wtedy nazywa się biblioteki w modelu

class Common_Model extends MY_Model{ 

    function __construct(){ 
     parent::__construct(); 
     $this->load->library('Datatables.php'); 
    } 

następnie próbowałem zadzwonić do funkcji bibliotecznych

function select_fields_joined_DT($data, $PTable, $joins = '', $where = '', $addColumn = '',$unsetColumn='') 
{ 
    /** 
    * 
    */ 
    $this->datatables->select($data); 
    if ($unsetColumn != '') { 
     unset_column($unsetColumn); 
    } 
     $this->datatables->from($PTable); 
    if ($joins != '') { 
     foreach ($joins as $k => $v) { 
      //$this->datatables->join($v['table'], $v['condition'], $v['type']); 
     } 
    } 

    if ($addColumn != '') { 
     $this->datatables->add_column("Actions", $addColumn); 
    } 

    $result = $this->datatables->generate(); 
    return $result; 
} 

i wszystko działa poprawnie, z wyjątkiem że phpstorm pokazuje mi błąd

Field Accessed via magic method 

enter image description here

próbowałem usunąć ten błąd z uwag dokument, ale nie mogę dowiedzieć się, w jaki sposób mogę to zrobić .. Każda pomoc będzie mile widziane.

+8

Musisz zadeklarować je za pomocą '@ property' w komentarzu PHPDoc należącym do tej klasy. – LazyOne

Odpowiedz

64

Jeśli chcesz usunąć ten bez dokumentu komentuje można odznaczyć Informuj o dostępie do pola poprzez magiczne metody który znajduje się w

Ustawienia projektu>Kontrole>PHP>Undefined>pole Undefined

Notify about access to a field via magic method

+12

Nie wiem, czy śmiać się, czy płakać. Zmieniłem z Idea na samotną phpstorm ostatnio i mając ten problem ponownie I googled to powiadomienie, aby znaleźć to pytanie SO. Nie podobała mi się przegłosowana odpowiedź i znalazłem komentarz @ LazyOne, który był tym, czego szukałem. Wtedy zdałem sobie sprawę, że ta odpowiedź była moja ... – chrisan

+0

Zrobiłem komentarz LazyOne jako odpowiedź społeczności. Możesz dodać do niego lub poprawić informacje. –

9

As mentioned by LazyOne w komentarzach pytanie:

Musisz zadeklarować je poprzez @property PHPDoc w komentarzu, że należący do tej klasy.

/** 
* @property string $bar 
*/ 
class Foo { 

    public function __get($name) { 
     if ($name == 'bar') { 
      return 'bar'; 
     } 
     return NULL; 
    } 
} 

Fragment z artykułu Dmitrija Dulepov za "Quick tip: magic methods and PhpStorm".

+0

Link do artykułu nie jest już ważny. –

+1

@CraigLondon artykuł nie jest potrzebny, ponieważ wszystko jest w odpowiedzi, a link został podany tylko jako źródło. Mimo to zaktualizowałem go za pomocą linku migawki [wayback machine] (http://archive.org/web/). –