SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 23.08.2005, 22:39:37
swishy swishy ist offline
Anfänger
 
Registriert seit: Jul 2002
Ort: Landsberg
Beiträge: 45
php4 - php5 functionsaufruf!

Ich habe mal eine generelle Frage, wo bekommt man eine gute Seite, um die unterschiede bei der Programmierung php5 Kompatibler Skripte zu lernen.

Ich habe da ein Problem. Ich habe ein Skript gemacht, das unter php4 einwandfrei läuft, aber unter php5 bekomm ich folgenden Fehler:
PHP-Code:
Fatal errorNon-static method MENU_Default::MENU_Default() cannot be called statically 
Es wäre schön, wenn mir da jemand den Tritt in die Richtige richtung geben könnte.

Danke. Swishy
Mit Zitat antworten
  #2  
Alt 23.08.2005, 23:12:55
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
AW: php4 - php5 functionsaufruf!

das problem scheint hier in einer klasse zu liegen, aber eigentlich sollte php5 soweit kompatibel sein...wie dem auch sei, ich hab damit nen ganz guten einstieg gefunden:

http://www.zend.com/php5/whats-new.php
Mit Zitat antworten
  #3  
Alt 23.08.2005, 23:57:37
Benutzerbild von Matt
Matt Matt ist offline
Member
 
Registriert seit: Mar 2002
Ort: Port 80, localhost-city, 127/0/0/1
Beiträge: 878
AW: php4 - php5 functionsaufruf!

Nunja, eines mal vorweg: PHP5 macht das absolut richtig, PHP4 macht (im eigentlichen sinne betrachtet) mist.

Der Unterschied ist folgender: Objektorientiertes Programmieren bedeuted ja nicht das schreiben von klassen im eigentlichen sinne, sondern das arbeiten mit Objekten im weitesten sinne. Eine Klasse ist sozusagen ein Bauplan für Objekte. Wenn du ein Auto bauen kannst, warum solltest du dann nicht auch zwei bauen können (falls du sie benötigst)

Wenn du ein Objekt erzeugen willst, geschieht das folgendermaßen:

$obj=new MyClass();

willst du nun die Methode foo von $obj aufrufen, geschieht dies über

$obj->foo();

hierbei wird die methode foo des Objektes $obj aufgerufen. Alles was diese macht, wirkt sich nur auf die klasse selbst aus. Ändert diese methode also beispielsweise die Variable $bar die in dieser klasse ist, wirkt sich das auf andere Objekte nicht aus.

Wenn du nun eine Methode so aufrufst (=statischer aufruf):

MyClass::foo()

dann rufst du diese methode nur auf, ohne ein Objekt erstellt zu haben - von dieser klasse gibt es praktisch nur eine version. wenn du da etwas änderst, ändert sich das überall, wo diese klasse verwendet wird.

Das ist alles ganz schön, beantwortet deine frage aber nicht... noch nicht.

Denn jetzt kommt es: stell dir vor, du würdest paralell mit statischen aufrufen auch gleichzeitig mit objekten arbeiten. Die änderung, die du an Objekten machst, wirkt sich nur auf sich selbst aus, die änderungen mit statischen aufrufen... auf was wirken die sich jetzt aus?

Daher müssen statische Aufrufe gekennzeichnet werden, indem du vor den funktionsnamen bzw. variablennamen ein "static" setzt. nun weiß PHP dass diese methode/variable für alle Objekte gleich ist - sie muss also nur einmal existieren. Trotzdem können alle Objekte auf diese statischen werte zugreifen. Wenn sie das tun, gilt für sie das selbe - die änderung betrifft alle Objekte des typs.
Anders herum, kannst du in einer statischen methode keine nicht statischen variablen ändern bzw. nicht statischen methoden aufrufen. (welche wären denn gemeint - für jedes objekt existiert eine version davon!)

Diese problematik war ein widerspruch in sich, die PHP in version 4.0 absolut ignoriert hat. Mit dem neuen Modell lassen sich allerdings sehr viele dinge realisieren, die davor nicht vernünftig machbar waren. Generell ist das initalisieren von Klassen aber empfehlenswert. Nur mit statischen Klassen zu arbeiten ist sinnlos - man könnte genausogut ohne klassen und mit globalen variablen arbeiten - es wäre (fast) das selbe, nur man würde PHP die Mühe des Parsens von Klassen ersparen.

so ich hoffe, es ist halbwegs rübergekommen, was ich erklären wollte.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP5 spinnt SK-Genius PHP für Fortgeschrittene und Experten 0 10.05.2005 17:38:16
PHP5 kennt MySQL_Connect() nicht mehr SK-Genius MySQLi/PDO/(MySQL) 9 13.10.2004 13:12:09
PHP4 oder JSP Kevin PHP Grundlagen 5 09.12.2003 13:27:44
PHP5 - Macht php4 noch sinn? xStream Off Topic Area 6 18.07.2003 10:17:27
PHP3 und PHP4: Unterschiede der Befehle? tekknotrip PHP Grundlagen 5 10.10.2002 08:42:25


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:05:26 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt