zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Ein kleines OOP Problem mit Klassen etc.

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 26.07.2007, 23:23
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 07.04.2007
Beiträge: 311
ct2oo4 befindet sich auf einem aufstrebenden Ast
Frage Ein kleines OOP Problem mit Klassen etc.

Hi,
ich versuche mich gerade etwas an OOP, da mich man nun endlich davon überzeugt hat. Ich hatte ein für meine Begriffe gutes Tutorial für den Anfang (klick).
Ich habe zunächst auch erst einmal versucht ein einfaches Konstrukt zusammenzusetzen:

PHP-Code:
<?PHP

class Katze {
    var 
$alter "3";
    var 
$farbe;

    function 
getAlter() {
     return 
$this->$alter;
    }
    function 
getFarbe() {
     return 
$this->$farbe;
    }
    function 
wasbistdu() {
      if(isset(
$farbe)) {
       
$message "Ich bin eine kleine Mietz mit ".$this->farbe." Fell und ich bin ".$this->getAlter()." Jahre alt";
       return 
$message;
      }
     
$message "Ich bin eine kleine Mietz und ich bin ".$this->alter." Jahre alt";
     return 
$message;
    }
    function 
setFarbe($neueFarbe) {
     
$this->$farbe $neueFarbe;
     return 
$this->$farbe;
    }
}

$Lisa = new Katze();

print 
$Lisa->wasbistdu();

?>
Ausgabe:
Zitat:
Ich bin eine kleine Mietz und ich bin 3 Jahre alt
So bis hierher funktioniert die ganze Sache auch. Bloß wenn ich beispielsweise eine schwarze Katze "generieren" möchte:

PHP-Code:
<?PHP

class Katze {
    var 
$alter "3";
    var 
$farbe;

    function 
getAlter() {
     return 
$this->$alter;
    }
    function 
getFarbe() {
     return 
$this->$farbe;
    }
    function 
wasbistdu() {
      if(isset(
$farbe)) {
       
$message "Ich bin eine kleine Mietz mit ".$this->farbe." Fell und ich bin ".$this->getAlter()." Jahre alt";
       return 
$message;
      }
     
$message "Ich bin eine kleine Mietz und ich bin ".$this->alter." Jahre alt";
     return 
$message;
    }
    function 
setFarbe($neueFarbe) {
     
$this->$farbe $neueFarbe;
     return 
$this->$farbe;
    }
}

$Lisa = new Katze(schwarzem); // <- Hier moechte ich die Farbe aendern

print $Lisa->wasbistdu();

?>
...funktioniert es leider nicht mehr.
Eigentlich sollte jetzt
Zitat:
Ich bin eine kleine Mietz mit schwarzem Fell und ich bin 3Jahre alt
... ausgeben werden, aber stattdessen wird
Zitat:
Ich bin eine kleine Mietz und ich bin 3 Jahre alt
... ausgegeben.

Rufe ich eventuell die Methoden falsch auf oder wo liegt der/ die Fehler?
Vielen Dank schon im Voraus für hilfreiche Antworten.

MfG Matze
__________________
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 27.07.2007, 01:25
Benutzerbild von kampfgnom
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 22.11.2006
Ort: Radebeul
Beiträge: 1.808
kampfgnom befindet sich auf einem aufstrebenden Ast
Standard

wie setzt du denn die Farbe? (Code)

Anonsten sieht bisher alles richtig aus!
__________________
Meine Spielwiese: http://blog.kanedo.net
Ich bei Flickr? Da: Flickr: Fotostream von kanedo-projekt
Für open Source Liebhaber: open Com

Auch ich Zwitschere als @kanedo
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 27.07.2007, 09:55
Benutzer
neuer user
 
Registriert seit: 29.05.2007
Beiträge: 48
Volli befindet sich auf einem aufstrebenden Ast
Standard

Hi.
Du hast 2 Möglichkeiten die Farbe einzustellen. Entweder du benutzt die vorhande Methode oder du schreibst noch einen Konstruktor. Der Konstruktor wird bei jeder Instanz automatisch aufgerufen.

Methode:
PHP-Code:
$Lisa = new Katze();
$Lisa->setFarbe('schwarzem');
print 
$Lisa->wasbistdu(); 
Konstruktor:
PHP-Code:
class Katze {
    var 
$alter "3";
    var 
$farbe;

    function 
Katze($farbe) {
      
$this->setFarbe($farbe);
    }
    function 
getAlter() {
     return 
$this->$alter;
    }
    function 
getFarbe() {
     return 
$this->$farbe;
    }
    function 
wasbistdu() {
      if(isset(
$farbe)) {
       
$message "Ich bin eine kleine Mietz mit ".$this->farbe." Fell und ich bin ".$this->getAlter()." Jahre alt";
       return 
$message;
      }
     
$message "Ich bin eine kleine Mietz und ich bin ".$this->alter." Jahre alt";
     return 
$message;
    }
    function 
setFarbe($neueFarbe) {
     
$this->$farbe $neueFarbe;
     return 
$this->$farbe;
    }
}
$Lisa = new Katze(schwarzem);
print 
$Lisa->wasbistdu(); 
MfG
Mit Zitat antworten
  #4 (permalink)  
Alt 27.07.2007, 11:04
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.016
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Kleine Frage:
Warum PHP4-Syntax? Die Unterstützung für die 4er Version wird zum Jahresende eingestellt, warum also nicht gleich die neue Syntax lernen und verwenden?

PHP: Klassen und Objekte (PHP 5) - Manual
Mit Zitat antworten
  #5 (permalink)  
Alt 27.07.2007, 11:20
Benutzerbild von loci
Benutzer
neuer user
 
Registriert seit: 17.02.2005
Ort: Saarland
Beiträge: 62
loci befindet sich auf einem aufstrebenden Ast
Standard

1. Integer sind Integer, also bitte
PHP-Code:
var $alter "3"
zu
PHP-Code:
var $alter 3
2. Strings sind Strings, also bitte
PHP-Code:
$Lisa = new Katze(schwarzem); 
zu
PHP-Code:
$Lisa = new Katze("schwarzem"); 
3. Wenn Du die Klassenvariable ausgibst, solltest du auch die Klassenvariable pruefen.
PHP-Code:
if(isset($farbe)) 
zu
PHP-Code:
if($this->farbe !== null
4. speicher sparen
PHP-Code:
$message "Ich bin eine kleine Mietz und ich bin ".$this->alter." Jahre alt";
return 
$message
zu
PHP-Code:
return "Ich bin eine kleine Mietz und ich bin ".$this->alter." Jahre alt"
5. wieso gibt ein setter den gerade gesetzten wert zurueck? den weisst du doch beim aufruf sowieso.
__________________
1101100 1101001 1100110 1100101 1101001 1110011 1100001 1100010 1101001 1110100 1100011 1101000

/(bb|[^b]{2})/
Mit Zitat antworten
  #6 (permalink)  
Alt 27.07.2007, 13:27
Benutzerbild von kampfgnom
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 22.11.2006
Ort: Radebeul
Beiträge: 1.808
kampfgnom befindet sich auf einem aufstrebenden Ast
Standard

Das leigt daran, das in dem Tutorial von quakenet ein Beispiel steht in dem das auch so beschrieben wird!

Da ist auch noch PHP 4...solltest du dir aber mal anschauen wie es mit PHP 5 geht!
__________________
Meine Spielwiese: http://blog.kanedo.net
Ich bei Flickr? Da: Flickr: Fotostream von kanedo-projekt
Für open Source Liebhaber: open Com

Auch ich Zwitschere als @kanedo
Mit Zitat antworten
  #7 (permalink)  
Alt 27.07.2007, 23:11
Benutzerbild von Timo
table-layout: none;
XHTMLforum-Kenner
 
Registriert seit: 11.11.2006
Beiträge: 5.345
Timo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein Lichtblick
Standard

Ich hab die Klasse mal überflogen und mir ist was aufgefallen:

PHP-Code:
function setFarbe($neueFarbe) {
     
$this->$farbe $neueFarbe;
     return 
$this->$farbe;
    } 
sollte das nicht so aussehen:

PHP-Code:
    function setFarbe($neueFarbe) {
     
$this->farbe $neueFarbe;
     return 
$this->farbe;
    } 
also der fehler liegt meiner meinung nach in der 2ten Zeile

Zitat:
$this->$farbe = $neueFarbe;
entferne mal den $ und teste es nochmal! Rest ist normalerweise I. O.

Gruß
Timo
Mit Zitat antworten
  #8 (permalink)  
Alt 05.08.2007, 15:08
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 07.04.2007
Beiträge: 311
ct2oo4 befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank schon mal für die vielen Antworten.
Ich habe mir gerade folgenden Link angeschaut: PHP: Klassen und Objekte (PHP 5) - Manual

Aber was ist neu an PHP5?! Im Moment sehe ich das leider nicht!?

Danke, Matze
__________________
Mit Zitat antworten
  #9 (permalink)  
Alt 05.08.2007, 15:34
Benutzerbild von ArcVieh
//
XHTMLforum-Kenner
 
Registriert seit: 19.12.2006
Ort: Gütersloh
Beiträge: 1.844
ArcVieh sorgt für eine eindrucksvolle AtmosphäreArcVieh sorgt für eine eindrucksvolle Atmosphäre
Standard

Magische Funktionen, staatischer Klassenaufruf, Sichtbarkeit (protected, public, private), etc.
Sicherlich noch viel viel mehr, aber das wäre das was mir grade so spontant einfällt.
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 05.08.2007, 15:39
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 07.04.2007
Beiträge: 311
ct2oo4 befindet sich auf einem aufstrebenden Ast
Standard

Ah okay, danke!
ich möchte gleich mal etwas ausprobieren und zwar will ich ein Kontaktscript in oop.
Bisheriges Problem:
Ich übermittle dem Script über eine HTML Seite mehrere Werte(per POST).
Aber leider lässt sich $_POST[''] innerhalb der Klasse nicht verwenden, aber wieso?! PHP gibt dabei folgenden Fehler aus:

Zitat:
Parse error: parse error, unexpected T_VARIABLE in /srv/www/htdocs/web258/html/matze/php/oop/contact/contact_post.php on line 3
Ist es überhaupt sinnvoll ein Kontaktscript in OOP zu schreiben? Denn ich wollte eigentlich nur etwas "spielen".

PHP-Code:
<?PHP
class email {
 var 
$name $_POST['name'];
 var 
$email $_POST['email'];
 var 
$text $_POST['text'];
  function 
setName($newName) {
   
$this->name $newName;
  }
  function 
setEmail($newEmail) {
   
$this->Email $newEmail;
  }
  function 
setText($newText) {
   
$this->name $newText;
  }  
  function 
getTime() {
   return 
time();
  }
}

$newEmail = new email();


print_r ($newEmail);
?>
Vielen Dank schon im Voraus.
MfG Matze

//-> LINK
__________________

Geändert von ct2oo4 (05.08.2007 um 15:40 Uhr) Grund: +link
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Kleines Problem bei den "Neue Beiträge"-Icons mgutt Fragen, Konstruktive Kritik, Lob / Bekanntmachungen 5 19.04.2010 11:37
Hab ein kleines CSS Problem bodoalbstadt CSS 3 15.07.2009 15:16
Kleines Problem mit der Navigation Pumpkin CSS 3 16.12.2007 22:52
Problem/ Unklarheiten beim Ansprechen von ID's, Klassen, Elementen (Suche Infos) Carolin CSS 7 03.12.2007 12:49
Auf andere Klassen zugreifen (OOP) MPDT Serveradministration und serverseitige Scripte 11 02.08.2007 15:39


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:57 Uhr.