Dokumentation
IPS_GetFunctionList
Benötigt: IP-Symcon >= 2.6
array IPS_GetFunctionList (int $InstanzID)
Parameterliste
InstanzID | InstanzID, für zu suchende Funktion. 0, um alle zu suchen. |
Rückgabewert
Ein Array von Strings aller Funktionsnamen
Beschreibung
Die Funktion ermittelt alle in der aktuellen Konfiguration von IP-Symcon verfügbaren IPS-Funktionen. Die Funktionen werden in einem Array aufgelistet. Die Anzahl der Funktionen ist abhängig von der derzeitigen Konfiguration von IP-Symcon. Wenn z.B. eine Instanz des TTS-Moduls (Text-To-Speech) konfiguriert ist, dann werden zusätzlich auch alle TTS-Funktionen aufgeführt.
Als Parameter kann die InstanzID als Filter angegeben werden. Somit werden nur die Funktionen angezeigt, die die betreffende Instanz veröffentlicht. Wird als InstanzID 0 angegeben, so ist der Filtermechanismus nicht aktiv und es werden alle in IP-Symcon verfügbaren Funktionen ausgegeben.
Details zu den einzelnen Funktionen können über IPS_GetFunction ermitteln werden.
Beispiel
$alleFunktionen = IPS_GetFunctionList(0);
print_r(IPS_GetFunction($alleFunktionen[48])); // nur Funktion 48 ausgeben (IPS_CreateScript)
/* liefert:
Array
(
[FunctionName] => IPS_CreateScript
[Parameters] => Array
(
[0] => Array
(
[Description] => ScriptType
[Type_] => 1
)
)
[Result] => Array
(
[Description] => Result
[Type_] => 1
)
)
*/
//Exportiert alle IP-Symcon Funktionen mit einer Parameterliste
$instanceid = 0; //0 = Alle Funktionen, sonst Filter auf InstanzID
$fs = IPS_GetFunctionList($instanceid);
asort($fs);
$typestr = Array("boolean", "integer", "float", "string", "variant", "array");
foreach($fs as $f) {
$f = IPS_GetFunction($f);
echo sprintf("[%7s]", $typestr[$f['Result']['Type_']]) . " - ".$f['FunctionName']."(";
$a = Array();
foreach($f['Parameters'] as $p) {
if(isset($p['Enumeration']) && sizeof($p['Enumeration']) > 0) {
$b=Array();
foreach($p['Enumeration'] as $k => $v) {
$b[] = $k."=".$v;
}
$type = "integer/enum[".implode(", ", $b)."]";
} else {
$type = $typestr[$p['Type_']];
}
$a[]=$type." $".$p['Description'];
}
echo implode(", ", $a).");\n";
}