Geschwindigkeit bei jedem Aufruf erhöhen

BFreakout

Erfahrenes Mitglied
Sers@all,

ich habe da ein kleines Problem, wie könnte ich bei dem unten stehenden Code den wert der Geschwindigkeit bei jedem Aufruf um 10% erhöhen

PHP:
<?php
class Auto
{
var $geschwindigkeit; // geschwinigkeit ist eine Eigenschaft, eine Member-Variable,

function beschleunigen(){$this->geschwindigkeit=$this->geschwindigkeit+10;}
}

$auto=new Auto();
$auto->beschleunigen();

echo $auto->geschwindigkeit;

?>

würde mich um Hilfe freuen,

euer BFreakout
 
Hi,

speichere den aktuellen Geschwindigkeitswert in einer Sessionvariable (bzw. einem Cookie) und inkrementiere diesen Wert bei jedem Aufruf.

Die Prozentuale Erhöhung bekommst Du dann z.B. so:
PHP:
$this->geschwindigkeit = $_SESSION['geschw'] *= 1.1;
$_SESSION['geschw'] = $this->geschwindigkeit;

Gruß
.
 
und wo sollte ich deinen Code reinschreiben?
Da ich annehme, dass man innerhalb von Klassenmethoden in PHP auch Zugriff auf superglobale Variablen hat: in die Funktion "beschleunigen". ;)

Vielleicht wäre es "eleganter", eine Methode "setSpeed" zu schreiben, der Du den Inhalt der Sessionvariablen als Argument übergibst.

Wie Du eine Session anlegst, entnimmst Du der Foren-Suchfunktion.

Gruß
.
 
mmhh.. ich bin halt noch ein Noop ;)

hab denn Code so geändert:

PHP:
<?php 
class Auto 
{ 
var $geschwindigkeit;

function beschleunigen(){$this->geschwindigkeit = $_SESSION['geschw'] *= 1.1;
$_SESSION['geschw'] = $this->geschwindigkeit;} 
} 

$auto=new Auto(); 
$auto->beschleunigen(); 

echo $auto->geschwindigkeit; 

?>

aber es kommt immer 0 als ergebnis...
 
PHP:
function beschleunigen(){
    $this->geschwindigkeit = $_SESSION['geschw'] *= 1.1; 
    $_SESSION['geschw'] = $this->geschwindigkeit;}  
}

Auch so wird hier wohl immer 0 rauskommen, da $_SESSION['geschw'] noch garnicht angelegt wurde (und sie somit bei der Multiplikation 0 sein wird).

Um die Multiplikation mit 0 zu vermeiden, würde ich
PHP:
if( ! isset( $_SESSION['geschw'] ) ) {
    $_SESSION['geschw'] = 10;    // Oder anderer Wert
}
am Anfang deines Skriptes einfügen.
Das session_start() solltest du trotzdem nicht vergessen ;)

Gruß
TwoFaze
 
Zurück