Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PhpStorm Field accessed via magic method

I have ignited datatables Library in my CodeIgniter library folder.

Some Code from Library

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();     } 

Then I called the library in model

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

then I tried to call the library functions

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

and everything works fine, except that the phpstorm shows me this error:

Field Accessed via magic method 

enter image description here

I tried to remove this error with document comments but can't figure out how can I do that.. any help will be appreciated.

like image 303
Sizzling Code Avatar asked Aug 30 '14 03:08

Sizzling Code


2 Answers

Edit: Just because I keep getting upvotes for this, I want to preface this answer with a caveat. I inherited an old project that I would not be working on long term nor be paid to properly type everything. I consider the below a nuclear option and would only do so under similar conditions. If this is a project you own or will at least be working with a long time, especially in modern PHP 7/8 and beyond era, please don't do this and tidy up your code instead with actual types or at least a docblock :) Original answer follows below.

If you want to remove this without document comments you can uncheck Notify about access to a property via magic method which is found in

Project Settings > Inspections > PHP > Undefined > Undefined property

Notify about access to a field via magic method

PhpStorm preferences screenshot

like image 172
chrisan Avatar answered Oct 18 '22 10:10

chrisan


As mentioned by LazyOne in the question comments:

You have to declare them via @property in PHPDoc comment that belongs to that class.

/**  * @property string $bar  */ class Foo {      public function __get($name) {         if ($name == 'bar') {             return 'bar';         }         return NULL;     } } 

Snippet from Dmitry Dulepov's article "Quick tip: magic methods and PhpStorm".

like image 22
5 revs, 2 users 98% Avatar answered Oct 18 '22 12:10

5 revs, 2 users 98%