Klassen und externe Variablen

ruNN0r

Erfahrenes Mitglied
hi,
habe leider wenig ahnung von Klassen bin dabei mich reinzuarbeiten aber brauche schnell ne lösung desswegen möchte ich euch mal stören ;)
Ich habe eine Klasse und dort drin sind Variablen (var $ip="***"; var $port="***";) anstatt das ich Per hand dort die Variablen eintrage muss würde ich gerne Variablen aus einer Datenbank nutzen. Ich frage die Datenbank schon ab und habe dann versucht einfach die Variable einzutragen dannach ging nix mehr! in einer Funktion kann ich Variablen von außen über "global" einbinden gibt es bei klassen auch eine möglichkeit?

Vielen Dank für die Unterstützung
 
Du könntest in der Klasse z. B. einen Konstruktor deklarieren und diesem die Variablen übergeben.

Beispiel:

PHP:
<?php

class foo
{
  public function __construct($foo, $bar)
  {
    echo $foo.'<br>'.$bar;
  }
}
$fVar = 1;
$sVar = 2;
$foo = new foo($fVar, $sVar);
?>
 
hab das mal versucht. ohne erfolg. Wie gesagt habe nicht sehr viel ahnung in der Richtung :(

PHP:
class xyz
{
var ip="[da soll meine Variable rein]";
var port="[da soll meine Variable rein]";

function getInfo()
{
  //eine weitere funktion
}
}
so weit erkennen kann wird das dann so ausgeführt: $xyz->getInfo();
Ich weiß nicht wie ich meine Variablen da rein bekomme :(
Mit dem was du meintst bin ich auch net weiter gekommen. Hab mir den Link angeschaut aber hab nichts gefunden das mir weiter geholfen hat. Hast du noch eine Idee?
 
Dort kriegst du deine Variablen nicht hin. Aber du kannst sie auch danach noch deklarieren.

Benutzt du PHP4 oder PHP5?
 
Schreibe das auf Xampp 1.6.2 da ist PHP 5.2.2 drauf soweit ich weiß und auf meinem Server (online) ist ebenfalls PHP5
 
Na denn...

PHP:
<?php
class foobar
{
  public $ip;
  public $port;

  public function __construct($ip, $port)
  {
    $this->ip = $ip;
    $this->port = $port;
  }
  public function test()
  {
    echo $this->ip.'<br>'.$this->port;
  }
}

$foo = new foobar('127.0.0.1', '6000');
$foo->test();
?>

Kann momentan leider nicht testen, sollte aber so funktionieren.
 
leider auch net :(
aber ich hab ne lösung... (du hast mich auf die Idee gebracht)

PHP:
class xyz
{
//var ip="[da soll meine Variable rein]"; //gelöscht
//var port="[da soll meine Variable rein]"; //gelöscht

function getInfo()
{
  global $row;
  $this->$ip=$row['ip'];
  $this->$port=$row['port'];
  //und so weiter
}
}
das war alles.
Besten dank! Hast mir gut geholfen!
 
Also in einer Klasse mit global zu arbeiten ist meiner Meinung nach Suende. Denn dadurch erwartet die Klasse einen bestimmten Zustand ausserhalb ihrerselbst, was ja bei einer Klasse nicht der Fall sein sollte, Kapselung eben.

Warum arbeitest Du nicht mit Parametern, wie Felix es aufgezeigt hat? Und wie es ja auch bei normalen Funktionen so oft der Fall ist. Oder arbeitest Du bei Funktionen auch grundsaetzlich mit global?

Ich seh spontan in seinem Beispiel keinen Grund warum es nicht funktionieren sollte.
 
Ich weiß nicht wo das Problem liegt oder was ich falsch gemacht habe bzw. warum es nicht funktioniert!
Ich versuche nur ein Script in meine seite einzufügen und so funktioniert es halt :rolleyes:

Ich bin kein held in PHP und noch eher ein Anfänger, funktionen nutze ich nicht sehr oft und wenn sind die recht simpel gestrickt. Mit klassen habe ich noch nie gearbeitet. Ich weiß nicht richtig was die Können, bzw. was ich damit kann. Bin gerade erst dabei mich da rein zu arbeiten. Brauchte nur schnell eine Lösung für dieses Problem.

Solltest du eine Lösung finden hab hier das Script das ich einbinden will.

THX erstmal
 

Anhänge

  • c.zip
    c.zip
    3,2 KB · Aufrufe: 19
Habs mir angeschaut... und kommt auch nicht weiter.
Ich hab keinen Plan von CS und ich hab keinen funktionierenden CS Server (der mir bekannt ist), sodass ich den Fehler im Script suchen kann.

Hatte das ganze HTML zeug drum herum erstmal weggenommen und nur den PHP Code angeschaut.
In der Methode getServerData() nach dem Verbindungsausfbau ein paar Debugs reingesetzt. "var_dump(stream_get_meta_data($cssocket));" in de do()while Schleife.

So sehe ich, das bei mir die Verbindung austimed (habe den Server versucht, der in dem Config File steht), sprich es kommt keine Antwort. (meine FW sollte es nicht sein)

Habe dann mal nach der Quelle des Scriptes gesucht.
Bin dann auf http://www.phpclasses.org/browse/file/632.html gestossen (Release von 2001) und von da auf den Urheber des Scriptes: http://www.gameserver.dk/
Und obs nun Zufall ist oder nicht. Auf der Webseite geht das Abfragen des CS Servers ebenfalls nicht.

Komme auch nicht so wirklich weiter.
Letztens wurde schonmal gefragt nach so einem CS Abfrage Script. Damals wurde verwiesen auf http://sourceforge.net/projects/gameq/ .

Gruss
 
Zurück