Neu ist natürlich maßlos übertrieben. Damit ist nur eine String-Variable gemeint in der man den Inhalt unterschiedlicher Variablentypen speichern kann. (wie Boolean, Integer, Float, wenn nötig: String :), aber auch ganze Arrays).
Auch die Methode WIE ist nicht neu, andere geistern hier ja schon im Forum herum!
Fazit: Für alle, die es brauchen!
Hier sind die Funktionen:
Ähnlichkeiten mit schon vorhanden sind natürlich nicht rein zufällig und gewollt.
<?
/*
***********************************
IP-SYMCON Global Function Scripts
***********************************
File : Global_Functions.ips.php
Zweck der Funktionen:
Erlauben den Zugriff auf eine externe Variable (vom Typ: String) unabhängig
vom verwendeten Variablentyp der internen Variable.
Funktioniert mit den folgenden Typen:
Boolean, Integer, Float, String & Arrays (hier auch kombiniert)
*/
function SetValueVariant($IPS_Variable,$PHP_Value) {
if (IPS_GetVariableType($IPS_Variable)!='String') return false;
return SetValueString($IPS_Variable,serialize($PHP_Value));
}
function GetValueVariant($IPS_Variable) {
if (IPS_GetVariableType($IPS_Variable)!='String') return false;
return unserialize(GetValueString($IPS_Variable));
}
function IPS_GetVariableVariantType($IPS_Variable) {
if (IPS_GetVariableType($IPS_Variable)!='String') return false;
$val=GetValueVariant($IPS_Variable);
if (is_bool($val)) return 'Boolean';
if (is_int($val)) return 'Integer';
if (is_float($val)) return 'Float';
if (is_string($val)) return 'String';
if (is_array($val)) return 'Array';
return false;
}
?>
Und hier ein Beispielscript zur Anwendung der Funktionen.
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : Probe.ips.php
*/
include_once('Global_Functions.ips.php');
for ($i=1;$i<=2;$i++) {
// Im ersten Durchlauf wird die Variable mit einem String "gefüttert"
if ($i==1) $x="Nur eine Probe";
// und dann im Zweiten mit einem Array überschrieben
else $x=array ("2" => "Two", "4" => "Four", "5" => "Five");
// Speichern
SetValueVariant("Variant_Var",$x);
// und wieder auslesen
$inhalt=GetValueVariant("Variant_Var");
echo ('Inhalt: "'.$inhalt.'" vom Typ: '.IPS_GetVariableVariantType("Variant_Var")).chr(13);
if ($i==2) print_r($inhalt);
}
?>
Viel Spass!
Günter.