PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP & Objekt-Variablen Problem


The_Invisible
2005-09-28, 17:14:21
Hallo 3dcenter,

bin gerade dabei ein script zu schreiben das wlan router auf funktionalität/Erreichbarkeit überprüft, das script ist noch in einer sehr frühen phase, also bitte noch nichts auf funktionsbasis benmängeln, es geht mir nur um ein problem.

Zuerst mal das Script:


#!/usr/bin/php -q
<?php

/*
* WLAN-Check V 0.1
*/

class WLAN_Check
{
/*
* DEFAULT VARS
*/

var $timeout = 2;
var $error = 0;
var $hosts = array(
"Hostname" => array(),
"Address" => array(),
"Timeout" => array(),
"More" => array()
);

function addHost($Hostname,$Address,$Timeout="",$More="")
{
$obj = 0;

if($Timeout==0 || $Timeout=="")
{
$Timeout = $this->timeout;
}

$this->hosts['Hostname'][] = $Hostname;
$this->hosts['Address'][] = $Address;
$this->hosts['Timeout'][] = $Timeout;
$this->hosts['More'][] = $More;

$obj = new WLAN_Net_Operations($Hostname,$this);
return $obj;
}
}

class WLAN_Net_Operations
{
/*
* NET_FUNCTIONS
*/

var $host = array();
var $ports = array();
var $wlanMain = 0;

function WLAN_Net_Operations($Hostname,$obj_wlan_main)
{
$this->host[$Hostname] = count($this->host)+1;
$this->wlanMain = $obj_wlan_main;
}

function addPort($port)
{
$this->ports[] = $port;
}

function check()
{
foreach($this->ports as $key)
{
$this->check_Port($key);
}
}

/*
* CORE_FUNCTIONS
*/

function check_Port($port)
{
switch($port)
{
case "80":
$fp = fsockopen ("172.16.22.141", 80, $errno, $errstr, 1);
if (!$fp)
{
$this->wlanMain->error = 1;
}
break;
default:
echo "vorher: ".$this->wlanMain->error;
$this->wlanMain->error = 1;
echo "nachher: ".$this->wlanMain->error;
break;
}
}
}

$WLAN = new WLAN_Check;

$WLAN_Leitner = $WLAN->addHost("Leitner WLAN","172.16.22.143",2,"More Info not av");
$WLAN_Leitner->addPort(80);
$WLAN_Leitner->addPort(21);
$WLAN_Leitner->addPort(110);
$WLAN_Leitner->check();

#$WLAN_Matzer = $WLAN->addHost("Matzer WLAN","172.16.22.144",3,"More Info not av2");

print_r($WLAN->hosts);

print_r($WLAN_Leitner->host);

print_r($WLAN->error);
?>


so, nach diesem beispiel sollte $WLAN->error (der letzte print_r() befehl) also 1 zurückgeben, tut es aber nicht, er gibt 0 zurück wie bei der initialisierung, was aber nicht sein dürfte...

jetzt steh ich nämlich wirklich aufn schlauch, ich werde noch ein bisschen herumprobieren, aber wenn alles nichts hilft werde ich wohl eine andere lösung suchen müssen.

thx
Rene

The_Invisible
2005-09-29, 10:40:12
so, habs selber geschafft, für alle die es interessiert:


#!/usr/bin/php -q
<?php

/*
* WLAN-Check V 0.1
*/

class WLAN_Check
{
/*
* DEFAULT VARS
*/

var $timeout;
var $error;
var $hosts;

function WLAN_Check()
{
$this->timeout = 2;
$this->error = 0;
$this->hosts = array(
"Hostname" => array(),
"Address" => array(),
"Timeout" => array(),
"More" => array()
);
}

function addHost($Hostname,$Address,$Timeout="",$More="",&$Mainobj)
{

if($Timeout==0 || $Timeout=="")
{
$Timeout = $this->timeout;
}

$this->hosts['Hostname'][] = $Hostname;
$this->hosts['Address'][] = $Address;
$this->hosts['Timeout'][] = $Timeout;
$this->hosts['More'][] = $More;

$obj = new WLAN_Net_Operations($Hostname,&$Mainobj);
return $obj;
}
}

class WLAN_Net_Operations
{
/*
* NET_FUNCTIONS
*/

var $host = array();
var $ports = array();
var $wlanMain;

function WLAN_Net_Operations($Hostname,&$obj_wlan_main)
{
$this->host[$Hostname] = count($this->host)+1;
$this->wlanMain =& $obj_wlan_main;
#print_r($obj_wlan_main);
#print_r($this->wlanMain);
#$this->wlanMain->addHost("Leitner WLAN2","172.16.22.1432",22,"More Info not av22");
}

function addPort($port)
{
$this->ports[] = $port;
}

function check()
{
foreach($this->ports as $key)
{
$this->check_Port($key);
}
}

/*
* CORE_FUNCTIONS
*/

function check_Port($port)
{
switch($port)
{
case "80":
$fp = fsockopen ("172.16.22.141", 80, $errno, $errstr, 1);
if (!$fp)
{
$this->wlanMain->error = 1;
}
break;
default:
echo "vorher: ".$this->wlanMain->error;
$this->wlanMain->error = 1;
echo "nachher: ".$this->wlanMain->error;
break;
}
}
}

$WLAN = new WLAN_Check;

$WLAN_Leitner = $WLAN->addHost("Leitner WLAN","172.16.22.143",2,"More Info not av",&$WLAN);
#$WLAN_Leitner->addPort(80);
#$WLAN_Leitner->addPort(21);
$WLAN_Leitner->addPort(110);
$WLAN_Leitner->check();

$WLAN_Matzer = $WLAN->addHost("Matzer WLAN","172.16.22.144",3,"More Info not av2",&$WLAN);

print_r($WLAN->hosts);

print_r($WLAN_Leitner->host);

print_r($WLAN->error);
?>


ich übergebe einfach das $WLAN Objekt mittels Verknüpfung womit ich direkten Zugriff darauf habe, ist ja eigentlich logisch aber ich war wohl überarbeitet

mfg