Wo sind IPSModule Typdefinitionen hin?

Wo sind denn eigentlich die IPSModule Typdefinitionen aus _ipsmodule.php zu finden? ich habe die immer zur Syntaxprufung und Intellisense in meiner IDE verwendet. Wenn sie nicht mehr im Standard Download sind, wäre es möglich sie bei SDK als extra Download bereitszustellen?

Tommi

Die Datei wird nicht mehr benötigt, da die Klasse jetzt nativ im IPS PHP verfügbar ist.
Steht aber nicht in der Migrationsanleitung.
Ich habe auch nur die alte für meine IDE aufgehoben und würde mich da tommis Wunsch anschließen :slight_smile:
Michael

Jupp wär klasse

Ich schau mal was ich da zaubern kann :slight_smile:

paresy

PS: @tommi: Kannst du die nicht per Reflection genauso generieren wie den IPSWrapper?

Der IPSwrapper benutzt IPS_GetFunctionList(). ich wüßte auf Anhieb nicht, wie ich die Definitionen und Methoden des IPSModule Objects auf eine ähnliche Weise generieren kann.

Tommi

Ich habe gerade mal mit Reflection rumgespielt. Die Namen der Methoden und Properties bekomme ich, aber nichts über die Parameter der Methoden.


$ref=new Reflectionclass('IPSModule');
echo $ref->__toString();
//bzw:
echo "Methods:
";
$meths=$ref->getMethods();
//var_dump($meths);
foreach($meths as $m) {
	$n =$m->getName();
	echo "$n:
";
	var_dump($m);
	print "Comment:".$m->getDocComment()."
";
	print "Parameters:".$m->getNumberOfParameters()."
";
	$pars=$m->getParameters();
	var_dump($pars);
}
echo "Constants:
";
$cons=$ref->getConstants();
var_dump($cons);

Class [ class IPSModule ] {

  • Constants [0] {
    }
  • Static properties [0] {
    }
  • Static methods [0] {
    }
  • Properties [1] {
    Property [ protected $InstanceID ]
    }
  • Methods [45] {
    Method [ public method __construct ] {
    }
Method [  public method Create ] {
}
Method [  public method Destroy ] {
}
Method [  protected method GetIDForIdent ] {
}
Method [  protected method RegisterPropertyBoolean ] {
}
Method [  protected method RegisterPropertyInteger ] {
}
Method [  protected method RegisterPropertyFloat ] {
}
Method [  protected method RegisterPropertyString ] {
}
Method [  protected method RegisterTimer ] {
}
Method [  protected method SetTimerInterval ] {
}
Method [  protected method RegisterScript ] {
}
Method [  protected method RegisterVariableBoolean ] {
}
Method [  protected method RegisterVariableInteger ] {
}
Method [  protected method RegisterVariableFloat ] {
}


Constructor Params:
array(0) {
}
Properties:
Property [ protected $InstanceID ]

Methods:
__construct:
object(ReflectionMethod)#4 (2) {
[„name“]=>
string(11) „__construct“
[„class“]=>
string(9) „IPSModule“
}
Comment:
Parameters:0
array(0) {
}
Create:
object(ReflectionMethod)#5 (2) {
[„name“]=>
string(6) „Create“
[„class“]=>
string(9) „IPSModule“
}
Comment:
Parameters:0
array(0) {
}
Destroy:
object(ReflectionMethod)#6 (2) {
[„name“]=>
string(7) „Destroy“
[„class“]=>
string(9) „IPSModule“
}
Comment:
Parameters:0
array(0) {
}
GetIDForIdent:
object(ReflectionMethod)#7 (2) {
[„name“]=>
string(13) „GetIDForIdent“
[„class“]=>
string(9) „IPSModule“
}
Comment:
Parameters:0
array(0) {
}
RegisterPropertyBoolean:
object(ReflectionMethod)#8 (2) {
[„name“]=>
string(23) „RegisterPropertyBoolean“
[„class“]=>
string(9) „IPSModule“
}

Tommi

Stimmt. Die deklariere ich auch noch gar nicht in der nativen Klasse. Das werde ich fixen, dann sollte dein Code auch korrekt gehen.

paresy

Kommt zur 4.3 :slight_smile:

paresy

OK. Ist ja noch etwas hin, nachdem wir gerade bei 4.2 gelandet sind.

Kann ich bis dahin eine mit dem bisherigen Inhalt von _ipsmodule.php vergleichbare Datei bekommen?

Vielen Dank!
Tommi

Ich habe mal einen ähnlichen Exporter gebaut wie du… Build PHP functions stubs for PHPStorm inclusion · GitHub
(Ist bisher ohne den fancy PHPDocs Enums ;))

Hier das Resultat mit IPS 4.3 + PHP 7.2 und somit schicken TypeInfo/ResultTypes bei der IPSModule Klasse.
PHP Funktionen: Generated Functions for IP-Symcon 4.3 · GitHub

paresy

Noch ein kleines Update, damit die optionalen Parameter der IPSModule Klasse korrekt ausgewertet werden.

paresy

Kannst du das noch mit den Inhalt eurer Online-Doku versehen ?
duck und wech

Michael

Ja, das würde gehen. Hatte aber dafür leider keine Zeit mehr. :rolleyes:

Ich müsste eh mal schauen, ob ich die Befehls-/Modulreferenz mal in ein per JSON konsumierbares Format exportieren kann. Dann könnte man das Skript auch recht simpel erweitern…

paresy

Das Script hätte ich für dich.
Es fehlt nur das PHP-SDK.
Michael