Ich habe die Datatables-Bibliothek in meinem CodeIgniter-Bibliotheksordner gezündet.
Etwas Code aus der Bibliothek
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();
}
Dann habe ich die Bibliothek in model aufgerufen
class Common_Model extends MY_Model{
function __construct(){
parent::__construct();
$this->load->library('Datatables.php');
}
dann habe ich versucht, die Bibliotheksfunktionen aufzurufen
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;
}
und alles funktioniert gut, außer dass der phpstorm mir diesen Fehler anzeigt:
Field Accessed via magic method
Ich habe versucht, diesen Fehler mit Dokumentkommentaren zu beheben, kann aber nicht herausfinden, wie ich das tun kann. Jede Hilfe wird geschätzt.
Sie müssen sie per deklarieren
@property
im PHPDoc-Kommentar, der zu dieser Klasse gehört.– LazyOne
30. August 2014 um 9:33 Uhr
Gibt es eine Möglichkeit, dies zu tun, ohne die Datei zu berühren, in der die Klasse deklariert ist? Zum Beispiel, wenn die Klasse Teil einer Bibliothek eines Drittanbieters ist und ich keine benutzerdefinierten Patches für diesen Code erstellen möchte, nur um diese hinzuzufügen
@property
Kommentare?– Enno
3. Juli 2019 um 9:43 Uhr
@Enno Hast du eine Antwort auf deine Frage gefunden? Ich habe auch das gleiche Problem wie du. Die einzige Möglichkeit, die mir einfällt, besteht darin, eine Klasse zu erstellen, die die Klasse eines Drittanbieters erweitert, und dann die hinzuzufügen
@property
? Bin mir aber nicht sicher ob es klappt.– markandrewkato
9. Juni 2020 um 13:50 Uhr
@markandrewkato Ich denke, es hängt sehr von deiner Situation ab, ob du die Klasse verlängern kannst oder nicht. In meinem Fall war das nicht möglich, und ehrlich gesagt weiß ich nicht mehr, was ich getan habe.
– Enno
10. Juni 2020 um 12:32 Uhr
@Enno Kein Problem. Da ich kein Dokument zu einem Drittanbieter hinzufügen kann und auch nicht verlängern möchte, habe ich einfach die Antwort unten befolgt. Vielen Dank!
– markandrewkato
11. Juni 2020 um 16:17 Uhr