php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.12.2011, 00:20  
Neuer Benutzer
 
Registriert seit: 04.12.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
volkan61 befindet sich auf einem aufstrebenden Ast
Standard Fehlermeldung beim Aufruf einer Methode

hallo,

ich bin ein absoluter Anfänger in PHP und ich arbeite als Einstieg an einem Projekt. Folgendes Problem: Ich habe 2 Klassen geschrieben einmal die Klasse "Player" und einmal die Klasse "Anmeldung". In der Klasse Player habe ich Methoden programmiert wie z.B. getName(). In der Klasse Anmeldung habe ich als Attribute mehrere Instanzen von Player. Ich habe aber auch Methoden die Methoden von Player aufrufen. Genau hier spuckt der Compiler eine Fehlermeldung.

Ich habe sehr lange Java programmiert und dort gab dieses Problem nicht, da wir Variablen mit Datentypen verwendet haben. In PHP haben wir ja - soweit ich weiß - keine Datentypen. Oder liege ich falsch?

Wäre echt nett wenn mir jemand auf die Sprünge helfen würde.

Gruß
volkan61 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 22.12.2011, 00:36  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Zitat:
Genau hier spuckt der Compiler eine Fehlermeldung.
Gut dass du sie und den Quellcode verheimlichst!
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 22.12.2011, 00:37  
Neuer Benutzer
 
Registriert seit: 24.04.2011
Beiträge: 5
PHP-Kenntnisse:
Fortgeschritten
mySeb befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

wenn du deinen Code posten würdest - könnte man dein Problem villeicht leichter verstehen!

Theoretisch sollte es kein Problem sein wenn du als Klassen-Variabele (der Klasse Anmeldung) ein Object der Klasse Player hast und dieses korrekt aufrufst eine Methode der Klasse Player aufzurufen.
__________________
Gruß,
mySeb
mySeb ist offline   Mit Zitat antworten
Alt 22.12.2011, 00:50  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.731
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Willkommen im Forum.

Zitat:
Zitat von volkan61
Ich habe sehr lange Java programmiert und dort gab dieses Problem nicht, da wir Variablen mit Datentypen verwendet haben. In PHP haben wir ja - soweit ich weiß - keine Datentypen. Oder liege ich falsch?
PHP arbeitet ebenfalls mit Datentypen. Das ist aber aufgrund der Umsetzung der Typisierung in PHP unter Umständen „wenig spürbar“.

- http://php.net/manual/en/language.types.php
- http://www.php.net/manual/en/types.comparisons.php (Tipp: nach Möglichkeit === verwenden)

PHP ist schwach und dynamisch typisiert. Java etwa stark und statisch.

- http://de.wikipedia.org/wiki/Schwach...on_Typsystemen

Edit: Wobei das eher für primitive Datentypen von Bedeutung ist als für Klassen. PHP kennt etwa Type Hinting.

- http://php.net/manual/en/language.oop5.typehinting.php
__________________
Blog | Buch | Kaloa

Geändert von mermshaus (22.12.2011 um 00:54 Uhr).
mermshaus ist offline   Mit Zitat antworten
Alt 22.12.2011, 00:50  
Neuer Benutzer
 
Registriert seit: 04.12.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
volkan61 befindet sich auf einem aufstrebenden Ast
Standard

Diese Methoden sind aus der Klasse "Anmeldung". Die Fehlermeldung habe ich nochmal im Code als Kommentar eingefügt.


Erklärung: Die Methode "turnierstarten" greift auf das Array angemeldet[] ,in dem die Teilnehmer des Turniers als Instanzen der Klasse Player gespeichert sind. Die Methode zeigeersteRunde greift auf dieses Array zu und erstellt ein neues Array mit den Paaren. Dazu habe ich wiedderum eine Klasse pair erstellt, die die Instanzen der Players enthält.

PHP-Code:
public function turnierstarten() {
$a=0;

for(
$i=0$i<sizeof($this->anmeldungen); $i=$i+2) {
$this->runde[$a]= new pair($this->angemeldet[i],$this->angemeldet[i+1],0,0);
$a++;
}

}


public function 
zeigeersteRunde() {



echo 
'<table border="1">';


for(
$i=0$i<sizeof($this->runde); $i++) {
echo 
"<tr>";


echo 
"<td>".$this->runde[$i]->player1->getName()"</td>";  
// <--- Hier kommt die Fehlermeldung.
//Fatal error: Call to a member function getName() on a non-object in /var/www/web624/html/a/an.php on line 245


echo "</tr>";
}


echo 
"</table>"

PHP-Code:
class pair {
public 
$player1;
public 
$player2;
public 
$scoreplayer1;
public 
$scoreplayer2;



public function 
player1won() {

if(
$this->scoreplayer1>$this->scoreplayer1)
return 
true;
else
return 
false;
}


public function 
player2won() {

if(
$this->scoreplayer2>$this->scoreplayer1)
return 
true;
else
return 
false;
}


public function 
draw() {

if(
$this->scoreplayer1==$this->scoreplayer1)
return 
true;
else
return 
false;
}




function 
pair($p1,$p2,$s0,$s1)
  {
    
$this->player1=$p1;
    
$this->player2=$p2;
 
$this->scoreplayer1=$s0;
 
$this->scoreplayer2=$s1;
  }



public function 
toString() {
//return  $this->player1->getName()." ".$this->scoreplayer1." ".$this->scoreplayer2." ".$this->player2->getName();
//return $this->player1->t;

}





PHP-Code:

class Player {

public 
$name;
public 
$icq;
public 
$em;



function 
Player($n,$i,$e) {
$this->name=$n;
$this->icq=$i;
$this->em=$e;
}

public function 
getName() {
return 
$this->name;

}

public function 
getICQ() {
return 
$this->icq;

}


public function 
getEM() {
return 
$this->em;
}



public function 
toString() {

echo 
$this->getName()." ".$this->getICQ()." ".$this->getEM();

}



Geändert von volkan61 (22.12.2011 um 00:55 Uhr).
volkan61 ist offline   Mit Zitat antworten
Alt 22.12.2011, 01:19  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Dein erster CodeBlock erschliesst sich mir noch nicht ganz.
Zu welcher Klasse gehören denn die Methoden turnierstarten() und zeigeersteRunde() ?
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 22.12.2011, 01:29  
Neuer Benutzer
 
Registriert seit: 04.12.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
volkan61 befindet sich auf einem aufstrebenden Ast
Standard

Zur Klasse Anmeldung.
volkan61 ist offline   Mit Zitat antworten
Alt 22.12.2011, 01:30  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Ja, so tasten wir uns ran...

Wie sieht die Klassen-Architektur von Anmeldung aus?
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 22.12.2011, 01:43  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Das mit dem "sehr lange Java" nehme ich dir zwar nicht ab, aber egal: Der Konstruktor heisst in PHP 5 __construct. Die Konstante i gibts in PHP nicht, du meinst wohl eher deine Schleifenvariable $i. Weiter hab ich nicht nachgeschaut ...

Schraub mal an deinem Error-Reporting, sonst stocherst du ewig im Nebel:
PHP-Code:
<?php
error_reporting
(E_ALL E_STRICT);
?>
Das bitte an den Anfang deines Skriptes, besser noch natuerlich direkt in der php.ini einstellen.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 22.12.2011, 02:00  
Neuer Benutzer
 
Registriert seit: 04.12.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
volkan61 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Chriz Beitrag anzeigen
Das mit dem "sehr lange Java" nehme ich dir zwar nicht ab, aber egal: Der Konstruktor heisst in PHP 5 __construct. Die Konstante i gibts in PHP nicht, du meinst wohl eher deine Schleifenvariable $i. Weiter hab ich nicht nachgeschaut ...

Schraub mal an deinem Error-Reporting, sonst stocherst du ewig im Nebel:
PHP-Code:
<?php
error_reporting
(E_ALL E_STRICT);
?>
Das bitte an den Anfang deines Skriptes, besser noch natuerlich direkt in der php.ini einstellen.
Das mit i war wohl der Fehler
volkan61 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Fehlermeldung bei rename, System kann die angegebene Datei nicht finden. (code: 2) litterauspirna PHP Einsteiger 5 18.08.2011 13:39
in einer Statichen Methode eine NICHT statiche Methode aufrufen ? 7Style PHP Einsteiger 16 26.07.2011 04:06
Ursprung eines Aufrufs einer Methode bitseeker PHP Einsteiger 4 24.06.2011 12:17
SOAP-Error bei einer einzigen Methode - Obwohl Response-Header 200 G.Schuster PHP-Fortgeschrittene 2 04.12.2010 11:53
[Erledigt] OOP mit PHP 5, Methode kann nicht innerhalb der class ausgeführt werden dudi PHP Tipps 2008 6 04.07.2008 00:02
Fehlermeldung umbenennen Soese PHP Tipps 2007 3 13.03.2007 13:33
script läuft und funktioniert gibt aber fehlermeldung aus? Promaetheus PHP Tipps 2006 5 12.09.2006 23:42
Fehlermeldung PHP Tipps 2005-2 2 04.09.2005 04:04
Ich will Fehlermeldung vermeiden. Zero.exe PHP Tipps 2005-2 2 02.08.2005 13:11
PHP5: Klassenattribut für statische Methode, mit Vererbung PHP-Fortgeschrittene 9 24.05.2005 09:35
fragwürdige Fehlermeldung PHP Tipps 2005 5 19.05.2005 15:45
Methode aus einer anderen Methode aufrufen PHP Tipps 2005 3 02.03.2005 10:07
Script bei Strato mit Fehlermeldung, bei Netbeat ok PHP Tipps 2004-2 14 08.12.2004 11:08
Abbruch bei Aufruf von ImageFunktion PHP-Fortgeschrittene 27 07.11.2004 21:43
Methode kapseln PHP Tipps 2004 2 12.10.2004 10:53


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:35 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum