ERLEDIGT
NEIN
NEIN
ANTWORTEN
11
11
ZUGRIFFE
589
589
EMPFEHLEN
-
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 GeorgGeändert von MasterGeo (18.08.02 um 18:37 Uhr)
-
Ich glaub so einfach geht das nicht und wenn dann auch nur ohne leerzeichen glaub ich.PHP-Code:
$this->name = $this->name ." war erfolgreich";
ansonsten versuch doch mal das so zu machen:
PHP-Code:$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-Code:<?PHP
class ge_test
{
var $name;
function ge_name($this->name){
echo $this->name ." war erfolgreich";
}
}
$myclass = new ge_test;
$myclass->ge_name(test);
?>
-
18.08.02 19:58 #5
- Registriert seit
- Apr 2001
- Ort
- Hamburg
- Beiträge
- 1.309
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-Code:<?PHP
class ge_test
{
var $name;
function echoVar()
{
echo $this->name." war erfolgreich.";
}
}
$myclass = new ge_test();
$myclass->name = "test";
$myclass->echoVar();
?>Geändert von Patrick Kamin (19.08.02 um 00:56 Uhr)
--
GNU/Linux - Weil man echte Freunde nicht kaufen kann
-
Vielen Dank! So richtig verstehen, tue ich es noch immer nicht. Aber ich weiß jetzt was man nicht machen kann.
-
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.
-
19.08.02 01:45 #8
- Registriert seit
- Apr 2001
- Ort
- Hamburg
- Beiträge
- 1.309
Ich liebe das Beispiel Auto bei Klassen.

Welches Buch liest du gerade?
--
GNU/Linux - Weil man echte Freunde nicht kaufen kann
-
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.
-
Also die Klassenvariablen haben schon einen Sinn: sie sind der 'globale' (für die gesamte Klasse geltende) Informationsspeicher, während innerhalb der Methoden lokale Variablen deklariert werden. Da man mit der return Anweisung nur eine Variable zurückgeben kann, kann man so die Ergebnisse von Berechnungen der ganzen Klasse zur Verfügung stellen.
Konstruktoren kann man zum Anlegen von Startwerten verwenden. Wenn man möchte, dass eine gewisse Klassenvariable per Default schon Werte zugewiesen bekommt, kann man das da machen. Ausserdem kann man ja einem Konstruktor auch Parameter übergeben.
ein Beispiel:
Was ich aber noch wichtiger finde, ist dass man das ganze überschreiben kann. Ich habe zum Beispiel eine Tabelle, in der Rubriken gespeichert werden. Jede Rubrik kann wieder Töchter haben usw. Meine Klasse nimmt nun alle Datensätze und geht sie durch, stellt eine Hierarchie auf und mit speziellen Methoden kann man dann den HierarchieBaum darstellen.PHP-Code:<?php
class Test {
function Test($startwert1, $startwert2) {
$this->wert1 = $startwert1;
$this->wert2 = $startwert2;
}
}
$myTest = new Test("1", "2");
?>
Nun lege ich in einem sehr einfachen Konstruktor fest, dass die Einrückungstiefe pro Hierarchielevel ein paar Pixel beträgt. Wenn ich das aber in einer anderen Situation nicht mehr so haben will, kann ich die Klasse ableiten, einen neuen Konstruktor hinzufügen und alles arbeitet mit der neuen Einrückungstiefe, ohne auch nur einmal die Basisklasse verändert zu haben. Im Beispiel könnte das so aussehen:
Wie gesagt: Konstruktoren sind zum setzen von Startwerten da.PHP-Code:<?php
class Test2 extends Test {
function Test($startwert1, $startwert2) {
$this->wert1 = $startwert1;
$this->wert2 = $startwert2 * 2;
}
}
$myTest = new Test2("1", "2");
?>
Mit Krause und OOP hast du recht, daher hab ich den Dreh erst bei der Java Programmierung gefunden. Aber mittlerweile möchte ich es in bestimmten Situationen nicht mehr missen.
Ciao, F.o.G.
-
24.09.02 09:14 #12
- Registriert seit
- Sep 2002
- Ort
- Friedelsheim
- Beiträge
- 34
@F.o.G.
Lob, Lob, rechtslinksschulterklopf&haendeschuettel
Super, so habe ich noch nie die Gundzüge der OOP
erklärt gesehen.
Schreibe doch mal ein Tut über dieses Thema. Ich habe
erst seit kurzer Zeit mit PHP begonnen und vorher nur
so ein bisschen Rumprogrammiert im Web.
Habe mir erlaubt, dich dafür per Bewertung zu loben
So weiss ich, wie schwer es ist, die Sache richtig unter
einen Hut zu bekommen.
Frage, seit wann progst du schon mit PHP?
Gruss
Peter:smoke:,
,:smoke:
Ähnliche Themen
-
Meine erste Erde! ;)
Von Envelope im Forum 3D-StillsAntworten: 3Letzter Beitrag: 09.10.09, 22:39 -
meine erste seite
Von Fugee21 im Forum Flash PlattformAntworten: 1Letzter Beitrag: 19.11.07, 21:23 -
Meine erste Grafik!
Von CaNNaBis im Forum PhotoshopAntworten: 16Letzter Beitrag: 08.02.02, 17:29





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren