• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

OOP - Varibalenname als zahl

Status
Für weitere Antworten geschlossen.

CGollhardt

Mitglied
Hallo,

ich verwende seit kurzen Klassen, und bin mit diesem Thema noch nicht vertraut.

Ich habe eine klasse member, die eine Datenbankabfrage in der Variable buildings speichert. Die Datenbankabfrage hat die Objekte 1-13, die die LV Nummer von Gebäuden enthalten (Browsergame)

PHP:
$member -> buildings -> 1
PHP:
$member -> buildings -> '1'
Das sollte die Stufe von meinem 1. Gebäude wiedergeben
Leider funktioniert beide nicht.

PHP:
$test = 1;
$member -> buildings -> $test
Dies würde funktionieren, aber da ich dynamisch programmieren möchte, gibt es da ne Möglichkeit die zahl zu escapen oder sowas, dass ich eher wie in meinem 1. PHP Befehl arbeiten könnte?
 
ich arbeite auch erst seit kurzen mit Klassen aber ich glaub das geht so:

class members{

class buildings{

var $test;

}

}

$members->buildings->$test = 1;

oder ?
 
Das Problem ist, da mir meine Datenbankklasse ein Objekt, statt array erzeugt, was an anderen stellen sehr viel bequemer ist.

Meine Datenbank
buildings:
planetid|1|2|3|4|...|13

Jetzt wird in der klasse member folgendes gemacht

$buildings = $db -> query ("Lese mir bitte die Level der Gebäude 1-13 von meinem Planeten aus")

Jetzt hat $buildings folgende variablen

$buildings -> planetid
$buildings -> 1
$buildings -> 2
$buildings -> 3
...
$buildings -> 13

Irgendwie muss ich doch zb. auf
$buildings -> 6
zugreifen können oder, außer das ich
$nr6 = 6;
$buildings -> $nr6
schreibe. Da würde mich ja jeder Programmierer auslachen^^


Edit
Im Moment habe ich es so gelößt
PHP:
for ($i = 1; $i <= 13; $i++) {
	${'number_' . $i} = $i;

$member -> buildings -> $number_1
$member -> buildings -> $number_13
}
Aber für bessere Ideen stehe ich noch offen
 
Zuletzt bearbeitet:
hm, ich würde es anders machen,

du hast eine klasse für den benutzer:

PHP:
$cUser = singleton::user(const_current_user_id);
$cUserBuildings = cUser->oGetBuildings();

foreach($cUserBuildings as $iBuildingId)
{

$building = $cBuilding->getInstance($iBuildingId);

echo $building->[....]

}
 
nein falsch, wenn du weiter darauf bestehst $bla->1 schreiben zu wollen dann würden wir lachen ;) ^^

ich denke hier währe ein singleton mit mehreren IDs angebracht ^^

und wie du das machen kannst steht in dem link aus meinem vorherigen post ^^
 
Das Problem ist das mein Schrott 1&1 Buisness Vertrag kein php 5 erlaubt...

Aber ich werde es mir mal anschauen, und bis zu meinem 18. in 2 Wochen mit XAMP offline an diesem Thema arbeiten. Dann wird eh der Provider gewechselt, und der muss PHP 5 unterstützen

Danke für den Link
 
ich weiß nicht ob ich das ganz verstanden habe was du machen willst aber vielleicht hilft dir dieses beispiel weiter:

PHP:
<?php
//datenbankverbindung aufbauen usw.


class Member
{
  public $memberid;
  
  public function __construct() {
    //Memberid irgendwie einlesen, wie auch immer du das machst
    //$this->memberid = '2';
  }
  
  public function getMemberid() {
    return $this->memberid;
  }
}

$member = new Member();

class Buildings
{
  public $buildings;

  public function __construct() {
    $this->buildings = array();
  }
  
  public function getBuildingsFromDB($memberid) {
    $sql = "SELECT
                  lvl
            FROM
                  buildings
            WHERE
                  member_id = '$memberid'
    ";
    $result = mysql_query($sql) OR die (mysql_error());
    while ($row = mysql_fetch_array($result)) {
      $this->buildings[] = $row["lvl"];
    }
  }
  
  public function printBuildings() {
    foreach ($this->buildings as $el) {
      echo $el . '<br>';
    }
  }
}

$building = new Buildings();
$building->getBuildingsFromDB($member->getMemberid());
$building->printBuildings();
?>
 
Eigentlich bietet 1und1 schon lange PHP5. Probier mal folgendes in deiner .htaccess:
Code:
AddType       x-mapp-php5              .php
AddHandler    x-mapp-php5              .php
 
Werde ich morgen gleich mal ausprobieren, muss jetzt bloß langsam Schluss machen, wir schreiben morgen ne Ex in der Schule.

Ehrlich gesagt, muss ich beichten, dass ich immer dachte, das man soetwas über den Admin Panel umstellt, wie z.b. auch bei den MySQL Datenbanken.

Ich muss zugeben, ich habe mit selfphp mir alles beigebracht, und jetzt bei großen Projekten, fällt mir erst auf, wie viele wichtige Dinge dort überhaupt nicht erwähnt werden.

Mein htaccess Wissen reicht gerade mal aus, um Verzeichnisse zu schützen, und Error Seiten zu definieren.

Hättest du zufälligerweise ein gutes Tut für htaccess?
 
Ich hoffe dies bezieht sich nciht auf mein Beispiel, es war etwas anders gemeint.

SPL-StandardPHPLibrary: Countable Interface Reference

natürlich war der threadersteller gemeint, da er gefragt hat wie man eine ausgabe einer zahl über ein objekt realisiert oder wie man diese in einem array abspeichert... ich weiß nicht ob ich damit genau sein problem getroffen habe.. ist ja jetzt auch nicht weiter wichtig.. er scheint ja eine lösung gefunden zu haben :)
 
Status
Für weitere Antworten geschlossen.

Neueste Beiträge

Zurück
Oben