PHP4 Klassen, Parameterübergabe

Sibra

Grünschnabel
PHP:
 class benutzer_ident{
	var $userName;
	var $userPsw;
	var $userIP;

	function set_user(){
			return $this->userName=$user;
		}
	function set_psw(){
			return $this->userPsw=$psw;
		}
	function set_user_ip(){
		return $this->userIP=$user_ip_adress;
		}
		}
	function get_user($user){
		echo $user;
		
		}
		
} 
// benötigte Daten werden geholt
$submit=($_GET['submit']='submit');

if (isset($HTTP_GET_VARS)) {
	$user = $HTTP_GET_VARS['user_name'];
	$psw=$HTTP_GET_VARS['user_psw'];
} else {
	$user = $_GET['user_name'];
	$psw = $_GET['user_psw'];
}

$user_ip_adress=$REMOTE_ADDR;
$uebergabe_benutzer_ident=new benutzer_ident;		
print$uebergabe_benutzer_ident->get_user($user);


Hallo,

me again ;) :rolleyes:

ich habe diese Klasse gemacht. Nach Eingabe von Username und Passwort im HTML-Formular wird der Inhalt in die Klasse gespeichert. Script geht, aber was ich nicht verstehe ist, dass ich trotz
PHP:
 return $this->userName=$user;”
beim Aufruf von get_user()$user mitschicken muß. Und überhaupt, wozu brauch ich in der Klasse ganz oben var $userName etc zu schreiben, wenn ich jedes mal ausserhalb der Klasse, die benötigten variablen schicken kann? Irgendetwas habe ich da doch falsch gemacht meint Ihr nicht? Warum kann ich die Werte nicht gleich mit der Instanz schicken sodass z.B.
PHP:
$userName
sofort auf $user gesetzt wird? Ungefähr so:
PHP:
$uebergabe_benutzer_ident=new benutzer_ident($user);
Wenn ich das mache, dann kommt ne Fehlermeldung: : Missing argument 1 for get_user().
 
mich wundert es nicht, dass deine Methode get_user($user) nix ausgibt.
Denn woher soll denn das erzeugte Objekt seine Daten herziehen?
Du hast zwar Methoden um Atribute wie $user etc zu setzen, aber benutzt sie nicht.
Um das Objekt gleich damit zu initalisieren, scahffe dir doch einen Konstruktor:

PHP:
class benutzer_ident{
    var $userName;
    var $userPsw;
    var $userIP; 

    //Nur der Sauberkeit halber der Defaultkonstruktor
    function benutzer_ident()
    {
      $this->userName=$this->UserPsw=$this->UserIP="";
    }

    //Dein Konstruktor mit Initialisierung
    function bneutzer_ident($user, $pw, $ip)
    {
      $this->userName = $user;
       $this->userPsw=$pw;
      $this->userIP=$ip;
     }
    ...
  }

und dann kannst du den Objekt auch gleich so erzeugen:

PHP:
$uebergabe_benutzer_ident=new benutzer_ident($user,$pws,$REMOTE_ADDR);

deine set_* Methoden sind zwar löblich aber eigentlich überflüssig, da du in PHP4 meines Wissens nicht die Möglichkeit hast Klassenattribute zu schützen,z.B. mit private oder so und du daher direkt mit $objek->attribut draufzugreifen kannst.
des weiteren sind die hybride, da sie sowohl set sind (auch wenn sie keinen Wert empfangen und den Wert immer auf eine nichtvorhandene lokale Variable setzen) und zum anderen auch noch den Wert zurückgeben...
 
Zurück