Meine erste Klasse und schon Probleme

MasterGeo

Mitglied
Hallo Leute,

mein erster Versuch eine Klasse zu schreiben geht schon in die Hose.


<?PHP

class ge_test
{
var $name;
$this->name = $this->name ." war erfolgreich";
}

$myclass = new ge_test;
$myclass->name = "test";

?>

Er gibt mir in Line 9 folgenden Fehler (wo $this->name = ... steht):

Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}''

Man ist das frustrierend. Wäre nett wenn mir einer auf die Sprünge helfen könnte.

Thanx Georg
 
Zuletzt bearbeitet:
PHP:
$this->name = $this->name ." war erfolgreich";
Ich glaub so einfach geht das nicht und wenn dann auch nur ohne leerzeichen glaub ich.
ansonsten versuch doch mal das so zu machen:
PHP:
$this->name = $this->name + " war erfolgreich";
 
Sorry aber das war nicht die Lösung.
Auch ein einfaches

echo "test war erfolgreich";

an der Stelle gibt den gleichen Fehler aus.
Irgendwie mache ich da was grundlegendes falsch.

Aber vielen Dank für den Versuch.
 
Ich bin mir gerade überhaupt nicht sicher ob du überhaupt einfach so die variable zuweisen kannst

versuch das mal so (mit ner funktion):
PHP:
<?PHP 

class ge_test 
{ 
    var $name; 
    function ge_name($this->name){
        echo $this->name ." war erfolgreich"; 
    }
} 

$myclass = new ge_test; 
$myclass->ge_name(test); 

?>
 
-

Also die Variable kannst du "leider" ohne weiteres nach Anlegen des Objektes direkt verändern, aber alles weitere musst du in eine Methode packen.
PHP:
<?PHP

class ge_test
{
    var $name;
    function echoVar()
    {
             echo $this->name." war erfolgreich.";
    }

}

$myclass = new ge_test();
$myclass->name = "test";
$myclass->echoVar();

?>
 
Zuletzt bearbeitet:
Was du da mit var ... anlegst, sind Klassenvariablen. Das sind die einzigen Befehle, die du nicht in Methoden packen musst.

Methoden sind dazu da, den Code zu modularisieren. Damit hast du dann kleine Einheiten, die eine bestimmte Funktion erfüllen sollen. Würdest du den Code innerhalb der Klasse wieder so runterrasseln wie bisher, würdest du nicht objektorientiert sondern wie gehabt strukturiert programmieren.

Stell dir immer vor, dass du mit dieser Klassen, also deiner Schablone ein bestimmtes Objekt formen willst. Was du mit diesem Objekt machen können willst, muss in Methoden, also den Eigenschaften des Objekts gepackt werden.

Beim Objekt Auto sorgt die Methode gasGeben() halt für mehr GEschwindigkeit, bremsen() für das Bremsen und ausfallInDerLenkungUndResultierenderUnfall() für den entsprechenden Schaden.

Hoffe ich hab mich verständlich ausgedrückt und dass dir das Thema OOP ein klitzkleines bisschen klarer geworden ist.

Ciao, F.o.G.
 
Also die Objektorientierung hab ich nicht durch PHP gelernt sondern durch Java. Da dort ALLES in Klassen gepackt werden muss, lernt man das Prinzip sehr schnell. Dort hab ich das Buch 'Jetzt lerne ich Java' vom M&T Verlag gelesen, weil es nur 10 € gekostet hatte.

Bei PHP kann ich für Anfänger PHP 4 von Jörg Krause empfehlen. Der kommt zwar aus der ASP Welt, kann aber gut erklären.

Bei Mysql ist das Buch MySQL von Michael Kofler EXTREM gut.

Demnächst hol ich mir noch PHP Deluxe. Ansonsten les ich das PHP Magazin wo neulich auch ein guter Artikel zu OOP in PHP drin war. Naja, letztendlich ist OOP für mich sehr wichtig, da ich damit den Usern meines CMS Klassen in die Hand geben kann, mit denen sie leicht die Artikel und andere Funktionen in Ihre Webseite einbinden können.

Ansonsten: einfach an Autos denken :)

Ciao, F.o.G.
 
Hallo Fog,

soweit ich das mit den OOP verstanden habe, besteht eine Klasse aus Methoden und Eigenschaften. Wenn wir beim Beispiel Auto bleiben sind die Methoden nichts weiteres als Funktionen wie Gasgeben. Eigenschaften würden den Klassenvariablen entsprechen, wie zum Beispiel Räder=4. Wieso ich diese Variabel nicht direkt ausgeben kann
weiß ich jetzt, aber den Sinn verstehe ich nicht. Es mach natürlich wenig Sinn eine Klasse zu schreiben die nur ein echo enthält. Es sollte mir auch nur beim debuggen helfen.
Was für mich noch zimlich schleierhaft ist sind die Konstruktoren. Wofür brauche ich die?

Übrigens Jörg Kraus habe ich auch und halte es auch für ein gutes Referenz-Buch. Aber OOP z.B. kann man aus dem Buch nicht lernen.
 
Zurück