PHP5 und OOP - Doku?
Bastian Kurz
- php
0 Tom0 Claudio0 Bastian Kurz0 Tom
0 fk0 Andreas Korthaus
Hi!
Also ich habe mit PHP eigentlich nie objektorientiert programmiert. Jetzt wollte ich mit das mit PHP5 mal genauer ansehen, habe mir Texte dazu gesucht und ein paar Beispielscripte geschrieben.
Es ergeben sich nun für mich einige Fragen. Leider finde ich keine richtige Anleitung und auch keine Doku, die die Builtin-Objekte beschreibt. Ich hab mir mal alle Klassen ausgeben lassen, die bei PHP eingebaut sind.
Da finde ich jetzt auch eine Array-Klasse und Iterator-Klassen dafür. Sieht interessant aus. Aber wie nutze ich die? Ich finde keine Doku. Im deutschen PHP-Handbuch steht noch nichts dazu.
Welche Parameter erwarten die Kontruktoren? Welche Eigenschaften gibt es? Welche Methoden sind implementiert? Welche kann/muß ich überschreiben? Die Klassen müssen doch irgendwo genau beschrieben sein, oder?
Kennt jemand gute Links (deutsch bevorzugt, englisch auch ok),
Dann weiter:
Was ist in PHP der Unterschied zwischen :: und -> ?
Ich habe durch Versuch rausgefunden, daß self::irgendwas das eigene Objekt anspricht und das ich mit parent:: die Klasse von der ich abgeleitet habe anspreche. Gibt es da noch mehr festgelegte Bezeichnungen?
und:
Kann ich ein Objekt explizit zerstören und den Speicher freigeben?
Gibt es sowas in der Art?
$a = new my_obj();
delete( $a );
Danke für Eure Hilfe.
Hello,
Das Problem bei OOP ist eigentlich, dass man nebst der passend designed Language auch ein entsprechendes Entwicklungssytemen benötigt, dass einen Bei der Auswahl und der Konfiguration der Objekte unterstützt. Eine "IDE" gehört aber noch nicht zum Umfang von PHP. Solange man OOP zu Fuß gestalten muss, kann man auch (Makro-)Assembler programmieren.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Dem kann ich nun wirklich nicht zustimmen!
Ich Programmiere schon seit langen in verschiedenen OO Sprachen, und dies auch ohne eine "praktische" IDE.
Ebenso hab ich auch schon in Assembler Programmiert...
Kurz, hab zwar noch nicht in PHP5 Programmiert aber:
Es gibt unwahrscheinlich viele Links in Internet, manche einfacher zu lesen als andere.
Genug geschwafel, hier schon mal ein Anfang:
http://www.devmag.net/webprog/php_oop_1.htm
Das war nur ein Link, keine Gewähr für die Verständlichkeit... Google mal ein bisschen...
Claudio
- beschäftige dich erstmal mit OOP unabhängig von der Sprache
Danke, aber ich arbeite sonst auch schon mal mit Java. OOP ist nicht das Problem. Ich suche nur nach einer Doku für PHP5-OOP. Denn was nützt es mir, wenn ich weiß, daß es eine Array-Klasse gibt, aber ich nicht rausbekommen kann, welche Methoden ich überschreiben muß/darf oder welche Parameter der Konstruktor erwartet, usw..
Es gibt unwahrscheinlich viele Links in Internet, manche einfacher zu lesen als andere.
Ja, schon klar. Aber ich suche halt eine Referenz oder etwas, das die Neuerungen in PHP5 und die neuen Klassen mir näher bringt.
Ich schaue sonst immer in das PHP-Handbuch, aber die hängen da scheinbar noch etwas zurück, so daß ich da nichts finden kann.
Basti
Hallo,
http://www.phppatterns.com/
Vielleicht findest du dort etwas; in bestimmten Problemfällen bin ich dort durchaus auf Lösungen gestoßen.
Michael
Danke, aber ich arbeite sonst auch schon mal mit Java. OOP ist nicht das Problem. Ich suche nur nach einer Doku für PHP5-OOP. Denn was nützt es mir, wenn ich weiß, daß es eine Array-Klasse gibt, aber ich nicht rausbekommen kann, welche Methoden ich überschreiben muß/darf oder welche Parameter der Konstruktor erwartet, usw..
du suchst wahrscheinlich nach fertigen klassen, welche in php erstellt sind, und sich in einer biblithek oder paket befinden.
solche liefert php nicht mit.
es gibt aber eine sammlung von klassen in PEAR. dort solltest du mal nachschauen.
Ja, schon klar. Aber ich suche halt eine Referenz oder etwas, das die Neuerungen in PHP5 und die neuen Klassen mir näher bringt.
Ich schaue sonst immer in das PHP-Handbuch, aber die hängen da scheinbar noch etwas zurück, so daß ich da nichts finden kann.
dies ist in der php doku unter klassen und objekte zu finden.
Hello,
- beschäftige dich erstmal mit OOP unabhängig von der Sprache
Danke, aber ich arbeite sonst auch schon mal mit Java. OOP ist nicht das Problem. Ich suche nur nach einer Doku für PHP5-OOP. Denn was nützt es mir, wenn ich weiß, daß es eine Array-Klasse gibt, aber ich nicht rausbekommen kann, welche Methoden ich überschreiben muß/darf oder welche Parameter der Konstruktor erwartet, usw..
Genau das habe ich gesagt!
Wenn man keine IDE hat, die das füe einen "mal schnell" herausfindet, was nützt mir dann die OOP?
Natürlich abgesehen, von der Programmsicherheit, die bei gut gebauten Klassen dann Fehlermeldungen bis zum Abwinken schmeißt.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
Dem kann ich nun wirklich nicht zustimmen!
Ich Programmiere schon seit langen in verschiedenen OO Sprachen, und dies auch ohne eine "praktische" IDE.
Diese Aussage kann ich nun nicht validieren und ich weiß auch nicht, wem Du den Tipp gegeben hast mit der OOP-Einführung.
Masse ist auch nicht Klasse, aber wenn Du täglich ca. 1.000 Zeilen (Statements) beständigen Code (dazu sind dann bestimmt manchmal 5.000 bis 10.000 Zeilen "Versuche" notwendig oder eben ein Spitzen-Pflichtenheft nebst Feinkonzept - wer hat das schon?) schaffen sollst, dann stehst Du mit so einer Blindflug-Sprache wie PHP-OOP schon ziemlich an der Kante.
Die Zahlen sollen hier sicherlich nur exemplarisch sein un dbeziehen sich auch nur auf die neuen Funktionalitäten, nicht auf Copy 'n Paste oder 'Include' ;-)
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi Tom!
Masse ist auch nicht Klasse, aber wenn Du täglich ca. 1.000 Zeilen (Statements) beständigen Code (dazu sind dann bestimmt manchmal 5.000 bis 10.000 Zeilen "Versuche" notwendig oder eben ein Spitzen-Pflichtenheft nebst Feinkonzept - wer hat das schon?) schaffen sollst, dann stehst Du mit so einer Blindflug-Sprache wie PHP-OOP schon ziemlich an der Kante.
Das verstehe ich jetzt nicht. Du willst täglich 1000 Zeilen Code erstellen, und schreibst dafür das 5-10 fache an Code? Ich habe jedenfalls sehr gute Erfahrungen mit Zend Studio gemacht, allerdings mag ich mir nicht alles von einer IDE vorgeben lassen. Was ich an Zend Studio sehr schätze ist der in meinen Augen hervorragende Editor. Ein wirklich nettes Feature ist, dass wenn ich eine Variable, eine Funktion oder eine Klasse eingebe, macht mir der Editor Vorschläge zur Auto-Vervollständigung, bei Klassen z.B. für die entsprechenden Methoden, und bei Funktionen/Methoden zeigt er mir dessen Signatur an. Sowohl bei PHP-Funktionen/Klassen, als auch bei eigenen. Leider ist das Teil nicht gerade ein Schnäppchen...
Außerdem gibt es in PHP 5 "__autoload()", wenn man vernünftig damit arbeitet, muss man sich nicht mehr um includes kümmern.
Grüße
Andreas
Hello,
Danke, genau das wollte ich wissen!
Das wird angeschafft. Mal sehen, ob wir dann nicht auch auf den Zend-Compiler nebst Runtime umsteigen. Die Projekte sind langsam einfach zu aufwändig, um sie total kopierbar zu machen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi!
Das wird angeschafft.
davon gibt es auch eine Evaluierungs-Version.
Mal sehen, ob wir dann nicht auch auf den Zend-Compiler nebst Runtime umsteigen.
Hm? Meinst Du den Opcode-Cache? Ja der ist nett, aber sehr teuer. PECL::APC reicht mir bisher, und ist auch nicht langsamer. Vor allem sind daran Entwickler beteiligt, von denen ich sehr viel halte (unter anderem Rasmus Lerdorf )...
Die Projekte sind langsam einfach zu aufwändig, um sie total kopierbar zu machen.
"kopierbar"?
Grüße
Andreas
Hello,
Die Projekte sind langsam einfach zu aufwändig, um sie total kopierbar zu machen.
"kopierbar"?
Ja, soll nicht immer OpenSource dabei entstehen... Manche Sachen will man auch zweimal verkaufen ;-)
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi!
"kopierbar"?
Ja, soll nicht immer OpenSource dabei entstehen... Manche Sachen will man auch zweimal verkaufen ;-)
Warum muss aufgrund irgendeines Editors OpenSource entstehen?
Grüße
Andreas
Hello,
"kopierbar"?
Ja, soll nicht immer OpenSource dabei entstehen... Manche Sachen will man auch zweimal verkaufen ;-)
Warum muss aufgrund irgendeines Editors OpenSource entstehen?
Wenn man die Applikation im Source-Code hat, wird sie das von ganz alleine, wenn auch illegal. Du glaubst ja wohl nicht, dass Scripte, die man ausliefert, ausschließlich auf dem Server bleiben, für den man sie vorgesehen hat. Die Zend Engine arbeitet mit "compiliertem" Code, der nicht so einfach wieder in Sourcecode zurückverwandelt werden kann.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hoi!
Wenn man die Applikation im Source-Code hat, wird sie das von ganz alleine, wenn auch illegal. Du glaubst ja wohl nicht, dass Scripte, die man ausliefert, ausschließlich auf dem Server bleiben, für den man sie vorgesehen hat.
Ah so meinst Du das ;-)
Die Zend Engine arbeitet mit "compiliertem" Code, der nicht so einfach wieder in Sourcecode zurückverwandelt werden kann.
Ach Du meinst den Zend Encoder? Sowas gibt es auch (billiger) von IonCube, und es gibt noch http://pecl.php.net/package/bcompiler
Auch der Turck-Cache kann das, allerdings entwickelt der Autor diesen nicht mehr weiter.
Grüße
Andreas
Hello,
Ach Du meinst den Zend Encoder? Sowas gibt es auch (billiger) von IonCube, und es gibt noch http://pecl.php.net/package/bcompiler
Auch der Turck-Cache kann das, allerdings entwickelt der Autor diesen nicht mehr weiter.
Hast davon schon was erfolgreich benutzt?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi!
Ach Du meinst den Zend Encoder? Sowas gibt es auch (billiger) von IonCube, und es gibt noch http://pecl.php.net/package/bcompiler
Auch der Turck-Cache kann das, allerdings entwickelt der Autor diesen nicht mehr weiter.Hast davon schon was erfolgreich benutzt?
Ich habe früher TurckMM-Cache eingesetzt, und dabei mal mit dessen Encoder-Möglichkeiten gespielt. Das funktionierte ganz ohne Probleme.
Leider ist es prinzipiell nicht möglich / sinnfrei einen Opcode-Cache zusammen mit einem Encoder einzusetzen. Da ich die letzte Zeit nur Software auf eigenen Servern einsetze, nehme ich dann doch lieber die Vorzüge eines Opcode-Cache in Anspruch.
Allerdings setze ich Turck schon lange nicht mehr ein, sondern PECL::APC. Zend ist von der Stabilität sicher sehr weit vorrne, aber auch beim Preis. Wenn Projekte in PECL als stabil markiert sind, ist das meine erste Wahl. Im Moment würde ich glaube ich den IonCube Encoder einsetzen. Das habe ich auch irgendwann mal ausprobiert, und lief gut. Der von denen angebote PHP-Accelerator ist allerdings nicht mehr auf der Höhe der Zeit.
Grüße
Andreas
Also ich habe mit PHP eigentlich nie objektorientiert programmiert. Jetzt wollte ich mit das mit PHP5 mal genauer ansehen, habe mir Texte dazu gesucht und ein paar Beispielscripte geschrieben.
eigentlich schade, denn oop ist schon länger möglich.
Es ergeben sich nun für mich einige Fragen. Leider finde ich keine richtige Anleitung und auch keine Doku, die die Builtin-Objekte beschreibt. Ich hab mir mal alle Klassen ausgeben lassen, die bei PHP eingebaut sind.
Da finde ich jetzt auch eine Array-Klasse und Iterator-Klassen dafür. Sieht interessant aus. Aber wie nutze ich die? Ich finde keine Doku. Im deutschen PHP-Handbuch steht noch nichts dazu.
Welche Parameter erwarten die Kontruktoren? Welche Eigenschaften gibt es? Welche Methoden sind implementiert? Welche kann/muß ich überschreiben? Die Klassen müssen doch irgendwo genau beschrieben sein, oder?
oop ist keine php spezialität. versuche lieber oop an sich zu verstehen.
Was ist in PHP der Unterschied zwischen :: und -> ?
Ich habe durch Versuch rausgefunden, daß self::irgendwas das eigene Objekt anspricht und das ich mit parent:: die Klasse von der ich abgeleitet habe anspreche. Gibt es da noch mehr festgelegte Bezeichnungen?
klasse::methode() ist ein statischer aufruf. es benötigt keine instanz.
objekt->methode() ist ein dynamischer aufruf. es muß ein objekt (instanz dieser klasse) geben.
Kann ich ein Objekt explizit zerstören und den Speicher freigeben?
Gibt es sowas in der Art?
$a = new my_obj();
delete( $a );
unset($a);
Hi!
Da finde ich jetzt auch eine Array-Klasse und Iterator-Klassen dafür. Sieht interessant aus. Aber wie nutze ich die? Ich finde keine Doku. Im deutschen PHP-Handbuch steht noch nichts dazu.
Naja, halt in englisch: http://de3.php.net/spl
Kennt jemand gute Links (deutsch bevorzugt, englisch auch ok),
http://de3.php.net/oop
http://de3.php.net/oop5
http://de3.php.net/migration5
Was ist in PHP der Unterschied zwischen :: und -> ?
Ich habe durch Versuch rausgefunden, daß self::irgendwas das eigene Objekt anspricht und das ich mit parent:: die Klasse von der ich abgeleitet habe anspreche.
http://de3.php.net/manual/en/language.oop5.paamayim-nekudotayim.php
Gibt es da noch mehr festgelegte Bezeichnungen?
Lies Dir die Beschreibung des Objekt-Modells im Manual durch. Es gibt z.B. noch $this, eine Referenz auf das eigene Objekt: http://de3.php.net/manual/en/language.oop.php#keyword.class, http://php-faq.de/q/q-klassen-this.html
Kann ich ein Objekt explizit zerstören und den Speicher freigeben?
Gibt es sowas in der Art?
$a = new my_obj();
delete( $a );
Man kann sowas machen:
$a = NULL;
http://de3.php.net/manual/en/language.oop5.basic.php
aber man sollte sich auch bzgl. "Reference Counting" informieren:
http://www.zend.com/zend/art/ref-count.php
(bzw. im Moment: http://www.google.de/search?q=cache:Woce8ffwrE8J:www.zend.com%2Fzend%2Fart%2Fref-count.php+reference+counting+zend&hl=de&start=1)
und sonst:
http://talks.php.net/index.php/PHP+5
http://tut.php-q.net/klassen.html
Grüße
Andreas