Klassen erstellen-> Anfänger

Steusi

Nasenbär
Hi, bin gerade dabei mich mit Klassen zu beschäftigen. Stoße aber gerade an meine Grenzen.
PHP:
class Benutzer {
	var $beschreibung;		
	
	function beschreibung_des_Benutzers($name,$vorname) { 

		$this->beschreibung="Ich heiße $name, $vorname";

		return $this->beschreibung;
		}
}


echo ('Benutzer anlegen<p>');
//neue Objekt heißt $say

// Objekt = new Klasse
$say = new Benutzer;

$say->name = "Timo";

$say->vorname ="Meier";



var_dump($say);

$say->beschreibung_des_Benutzers();

echo $say->beschreibung_des_Benutzers();

Wie komme ich an meinen Satz:
"Ich heiße Timo Meier"


Also bei var_dump steht folgendes:
Code:
object(Benutzer)#1 (3) { ["beschreibung"]=> NULL ["name"]=> string(4) "Timo" ["vorname"]=> string(5) "Meier" }

und beim abrufen bekomme ich folgende Fehlermeldungen:
Code:
Warning: Missing argument 1 for Benutzer::beschreibung_des_Benutzers(), ...

Warning: Missing argument 2 for Benutzer::beschreibung_des_Benutzers(), ...

Wie muss ich es richtig machen? Vielleicht habe ich auch eine schlechte Anleitung zum lernen?
 
Bin zwar kein phpler
aber Methoden aufruf musst du die Parameter übergeben

PHP:
echo $say->beschreibung_des_Benutzers("Timo","Meier");
 
Achso ich muss also mein Objekt nur meine Methode inkl. Eigenschaften zuweise.
Das Gesamte fertige Objekt kann ich dann einer Variable zuweisen.
Dann kann ich ganz normal die Variable aufrufen.
PHP:
class Benutzer { 
    var $beschreibung;         
     
    function beschreibung_des_Benutzers($name,$vorname) {  

        $this->beschreibung="Ich heiße $name, $vorname"; 

        return $this->beschreibung; 
        } 
} 


echo ('Benutzer anlegen<p>'); 
//neue Objekt heißt $say 

// Objekt = new Klasse 
$say = new Benutzer; 

$nutzer = $say->beschreibung_des_Benutzers("Timo","Meier");  


echo $nutzer;
Danke nun klappt alles!
 
So wie es Leroux geschriben hat ist es richtig:

hier nochmal der richtige code:
PHP:
class Benutzer {
    var $beschreibung;        
    
    function beschreibung_des_Benutzers($name,$vorname) { 

        $this->beschreibung="Ich heiße $name, $vorname";

        return $this->beschreibung;
        }
}


echo ('Benutzer anlegen<p>');
//neue Objekt heißt $say

// Objekt = new Klasse
$say = new Benutzer;

echo $say->beschreibung_des_Benutzers("Timo","Meier");
 
Deine Lösung funktioniert natürlich, hat aber wenig mit Objektorientierung zu tun. Hier einfach mal eine Implementierung, die etwas eleganter ist:
PHP:
class User
{
     var $name;
     var $prename;

     function setName($prename, $name)
     {
          $this->prename= $prename;
          $this->name = $name;     
     }

     function getDescription()
     {
          return "Ich heiße " + $this->name + ", " + $this->prename;
     }
}

$user = new User();
$user->setName("Timo", "Meier");

echo $user->getDescription();

Ich denk, der Code sollte verständlich sein, ansonsten gerne fragen :-)
 
Ich würde empfehlen, direkt mit der objektorientierten Programmierung von PHP5 zu beginnen, statt mit PHP4, da PHP4 mittlerweile seit August ausgemustert worden ist und PHP5 viel mehr Möglichkeiten bei OOP bietet!
 
Wie PHP5 hat eine andere Schreibweise der Klassendefinition? Das habe ich gar nicht gelesen, kann mir vielleicht jemand ein sehr gutes Buch für PHP empfehlen?
Vielleicht eins von Galileo Computing?
Nur welches ist wirklich gut?
 
Danke Loomes, zwar etwas sehr ungewöhnlich geschrieben, aber für den ersten Einstieg sehr gelungen!
Alles wichtige erschein klar und vernünfig ich empfehle aber noch mal sich eine andere Anleitung zum Thema durchzulesen.
 
Deine Lösung funktioniert natürlich, hat aber wenig mit Objektorientierung zu tun. Hier einfach mal eine Implementierung, die etwas eleganter ist:
PHP:
class User
{
     var $name;
     var $prename;

     function setName($prename, $name)
     {
          $this->prename= $prename;
          $this->name = $name;     
     }

     function getDescription()
     {
          return "Ich heiße " + $this->name + ", " + $this->prename;
     }
}

$user = new User();
$user->setName("Timo", "Meier");

echo $user->getDescription();

Ich denk, der Code sollte verständlich sein, ansonsten gerne fragen :-)

@m0rb, wenn ich raten müsste, würd ich sagen du kommst von JavaScript =)

Bei PHP werden Strings mit Punkten (.) aneinandergehängt. also so:

PHP:
return "Ich heiße ".$this->name. ", ".$this->prename;

Ich muss zugeben ich hab es noch nie mit einem "+" getestet ob es überhaupt funktioniert, aber der Punkt ist deffinitiv Standard.
 
Zurück