PHP Fümpf |
Manticor
Quasselstrippe Threadstarter
Beiträge: 240 |
Hi.
Da PHP5 in dem ersten Final Release vor der Tür steht wollte ich mal Fragen, ob es irgendwo schon gute Erklärungen gibt, was sich den zu den 4er-Versionen alles ändert und wie man es nutzen kann. Z.B. hatte ich mich mit der rudimentären OO-Programmierung der 4er-Versionen auseinandergesetzt und sie gut und einfach verwenden können, nun scheint es aber ein halbes Dutzend verschiedener Spezialobjekte zu geben, deren Sinn sich auf den ersten Blick vermutlich nur Java- und C++-Codern erschließt.
Es gibt zwar eine Seite [*], die einen Teil dieser Änderungen zu erläutern versucht aber so ganz werde ich nicht - vermutlich gerade dadurch, dass die Beispiele so primitiv gehalten sind - daraus nicht schlau.
Also lange Rede, kurzer Sinn. Gibt es irgendwo eine bessere Einführung für Umsteiger PHP4 zu 5?
Danke,
Manti
---
|
 Profil
Website
Editieren
Zitieren
|
einstein
Quasselstrippe
Beiträge: 241 |
Ich empfehle dir auf jeden Fall mal einen Blick auf die Seite von den Entwicklern der Zend Engine: http://www.zend.com/zend/php5/
Die meisten Änderungen sind, wie du schon ansprichst, aus JAVA, C++ und anderen OOP Sprachen schon bekannt...
Außerdem empfiehlt sich die try'n'error methode, indem man einfach mal mit der beta4 seine Anwendungen testet...
|
 Profil
Editieren
Zitieren
|
Manticor
Quasselstrippe Threadstarter
Beiträge: 240 |
Danke für die rasche Antwort. Allerdings liegt ja gerade das Problem darin, dass ich weder Java noch C++ beherrsche und dass mir dann z.B. "abstract" nicht wirklich viel sagt. Die Beispiele von Zend und PHP nutzen meist das einfachst denkbare Modell, um die Bedeutung zu erläutern, wodurch zwar die Syntax, aber nicht der Sinn offenbar wird.
---
|
 Profil
Website
Editieren
Zitieren
|
slackerbitch
Otto-Normal-Poster
Beiträge: 69 |
schau dir eine allgemeine einfuehrung in die oop an, wenn du mit dem link auf die php seite nicht weiter kommst. wenn du dann verstehst, was das alles eigentlich sein soll (also du die noetige theorie hast), faellt es dir auch leichter, es mit hilfe solcher seiten (die sich meistens an leute richten, die diesen background haben) umzusetzen.
oder du wartest auf die ersten php5 buecher. ;)
---
sig
|
 Profil
Website
Editieren
Zitieren
|
Philipp Gérard
Foren-Team
Beiträge: 1502 |
wenn du den link nicht verstehst, brauchst du die neuerungen von php5 auch nicht
---
Arbeit ist das Feuer der Gestaltung. - Marx
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
Manticor
Quasselstrippe Threadstarter
Beiträge: 240 |
Also mit der rudimentären OO-Programmierung von PHP4 kam ich gut klar und die Theorie - denke ich - ist mir auch in den Grundzügen bekannt. Schon schade, wenn das nicht ausreicht, um mehr erklärt zu bekommen.
---
|
 Profil
Website
Editieren
Zitieren
|
Philipp Gérard
Foren-Team
Beiträge: 1502 |
Prinzipiell geht es nur darum, dass nun spezielle Rechte für Funktionen und Variablen eingeführt werden, die für die Vererbung in PHP elementar wichtig sind. Und da OOP ohne childs usw. wenig Sinn macht...
Eben gefunden:
Sterling Hughes hat vor einigen Tagen in New York PHP5 vorgestellt. PHP wird mit dieser Version nun endlich erwachsen. Es unterstützt richtige objektorientierte Programmierung, man kann aber trotzdem noch ähnlich wie in PHP 4 programmieren. Mit der neuen Version schreibt sich PHP ähnlich wie das trotzdem noch viel komplexere Java. Die meisten Neuerungen werden den „normalen“ PHP-Entwickler nicht betreffen, sie lohnen sich nur bei sehr umfangreichen Projekten.
Nun zu den Neuerungen in PHP5:
Namespaces:
Namespaces haben in PHP5 eigentlich nur eine Aufgabe, die hilft, die Übersicht über den Quellcode zu verbessern – wirkliche Funktionalität bieten sie nicht. Man kann jetzt die Klassen in Namespaces stecken, um eine Art Verzeichnisbaum der Klassen aufzubauen. So muss man nicht immer alle Klassen etwa
$e = new LanguagesPerlExecute();
Nennen, man kann stattdessen schreiben
$e = new Languages:Perl::Execute;
Hier ein Beispiel:
namespace Languages:Perl {
class Execute {
function statement($cmd) {
$cmd = escapeshellcmd($cmd);
system("echo $cmd | perl");
}
}
class Insult {
function oneLiner() {
echo "Perl is soo ugly, even ";
echo "Microsoft can't embrace it";
echo "
";
}
}
}
$e = new Languages:Perl::Execute;
$e->statement("print 'Hello World!'");
echo "
";
$i = new Languages:Perl::Insult;
$i->oneLiner();
?>
Exception handling:
PHP5 bietet ein stark verbessertes Exception Handling. Das braucht man zum Beispiel, wenn man angepasste Fehlermeldungen an den Benutzer schicken will. Neu hinzugekommen ist auch das aus C++/Java bekannte try {} catch{}. In den try-Block schreibt man alle Anweisungen, die normal ausgeführt werden sollen. Wenn aber die Ausführung einer Anweisung fehlschlägt, zum Beispiel weil eine Datei nicht gefunden werden kann, werden statt den Befehlen im Try-Block die Befehle im Catch-Block ausgeführt.
So kann man den Code übersichtlicher halten und Fehlermeldungen viel leichter Abfangen oder Vermeiden. Das ganze kann z. B. so funktionieren:
define('NUM', 10);
try {
if (NUM < 20) {
throw new Exception(NUM . " is too small!");
}
} catch (Exception $e) {
echo $e->getMessage();
echo "
";
}
?>
Um eigene Fehlermeldungen zu “throwen” kann man mit Hilfe der Objektorientierten Programmierung eine eigene Fehlerklasse erzeugen.
Object Orientation:
PHP5 hat eine neue Objektorientierte Programmierung spendiert bekommen. Dazu zählen im Wesentlichen folgende neue Features:
- Konstruktoren/Destruktoren
- Zugriffskontrolle auf Variablen der Klasse mittels private/protected/public-Schlüsselwörtern (wie auch in C++/Java)
- Statische Variablen/Funktionen in Klassen
- final-Keyword: Mit dem Keyword final kann man Variablen „finalisieren“. Das bedeutet, dass man diese nach der Definition nicht mehr ändern kann, ähnlich wie Konstanten
Definition: final public $name = „value“;
- Objekte/Funktionen überladen
- Abstrakte Funktionen (Funktionen ohne Inhalt, die z. B. nach einer Vererbung überschrieben werden können)
- Objekte „klonen“:
class sheep {
var $name;
}
$start = new sheep;
$start->name = "Dolly";
$new = $start->__clone();
$new->name = "Molly";
?>
__autoload()-Funktion
Man kann nun eine Funktion mit dem Namen __autoload() definieren. Diese wird automatisch zu Beginn der Ausführung der PHP-Datei ausgeführt. In dieser Funktion kann man zum Beispiel Funktionsbibliotheken laden, ohne die nicht weitergearbeitet werden kann. Wenn die Ausführung von __autoload() fehlschlägt, wird ein Fehlermeldung an den Client zurückgegeben.
Streaming-Funktion
Man kann jetzt einen Streaming-Server mit PHP5 betreiben.
Beispiel:
$s = stream_socket_server('tcp://localhost:8080');
while ($client = stream_socket_accept($s)) {
$line = fgets($client);
echo $line;
}
?>
Es gibt noch etliche Neuerungen mehr, als die hier aufgelisteten. Das sind vor allem Sachen, die mit Klassen zu tun haben. PHP5 hat jetzt ein vollständiges objektorientiertes System, wie auch Hochsprachen (C++/Java) eins haben.
Alles in allem ist PHP5 wesentlich komplexer geworden, vor allem durch die OOP. Für C++/Java-Programmierer ist der Umstieg absolut kein Problem, da viele Sachen sehr ähnlich wie in diesen Sprachen funktionieren. Wer neu ist, sollte die OOP auf später verschieben. |
---
Arbeit ist das Feuer der Gestaltung. - Marx
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
Manticor
Quasselstrippe Threadstarter
Beiträge: 240 |
Danke. Das ist doch schonmal was.
---
|
 Profil
Website
Editieren
Zitieren
|