Umstieg PHP4->PHP5: Vererbung geht nicht.
Umstieg PHP4->PHP5: Vererbung geht nicht.
am 22.03.2007 22:28:36 von kscheller
Hallo,
das typische "mein Script funktioniert mit PHP5 nicht" ist es wohl
nicht.
Schon bei der Kompilierung gibt es eine Fehlermeldung, die ich nicht
auflösen kann.
Ich verwende die eclipse-Library, und da wird eine Klasse "Iterator"
definiert. Wenn ich nun von dieser (abstrakten) Klasse ableiten will,
bekomme ich ein
"PHP Fatal error: Class CompositeIterator cannot extend from interface
Iterator"
ähm... "Interface" Iterator? Was ist das denn?
Servus,
Konni
--
Leute, die "das Mail" sagen, zitieren auch für gewöhnlich die
gesamte Mail nach ihrer Antwort.
Re: Umstieg PHP4->PHP5: Vererbung geht nicht.
am 22.03.2007 22:45:26 von Florian Laws
On 2007-03-22, Konni Scheller wrote:
> Hallo,
>
> das typische "mein Script funktioniert mit PHP5 nicht" ist es wohl
> nicht.
>
> Schon bei der Kompilierung gibt es eine Fehlermeldung, die ich nicht
> auflösen kann.
>
> Ich verwende die eclipse-Library, und da wird eine Klasse "Iterator"
> definiert. Wenn ich nun von dieser (abstrakten) Klasse ableiten will,
> bekomme ich ein
>
> "PHP Fatal error: Class CompositeIterator cannot extend from interface
> Iterator"
>
> ähm... "Interface" Iterator? Was ist das denn?
Eine Neuerung in PHP5. Interfaces sind sowas wie abstrakte Klassen,
mit dem Unterschied, dass man von mehreren Interfaces ableiten kann.
http://de.php.net/manual/en/language.oop5.interfaces.php
PHP5 definiert selbst ein Interface mit dem Namen Iterator.
http://de.php.net/manual/en/language.oop5.iterations.php
Grüße,
Florian
Re: Umstieg PHP4->PHP5: Vererbung geht nicht.
am 22.03.2007 23:37:33 von Martin Lemke
Konni Scheller schrieb:
> Schon bei der Kompilierung
Mie kompiliert man php?
Martin
Re: Umstieg PHP4->PHP5: Vererbung geht nicht.
am 22.03.2007 23:50:55 von kscheller
Florian Laws wrote:
> Eine Neuerung in PHP5. Interfaces sind sowas wie abstrakte Klassen,
> mit dem Unterschied, dass man von mehreren Interfaces ableiten kann.
>
> http://de.php.net/manual/en/language.oop5.interfaces.php
>
> PHP5 definiert selbst ein Interface mit dem Namen Iterator.
Danke, dann ist es klar.
Muss ich wohl das Eclipse-Zeugs umschreiben... :-(
Servus,
Konni
--
Leute, die "das Mail" sagen, zitieren auch für gewöhnlich die
gesamte Mail nach ihrer Antwort.
Re: Umstieg PHP4->PHP5: Vererbung geht nicht.
am 22.03.2007 23:50:56 von kscheller
Martin Lemke wrote:
> Mie kompiliert man php?
Dieser Satz kein Deutsch.
Abgesehen davon, es stimmt. Nur dass es für den Benutzer unsichtbar
abläuft.
Servus,
Konni
--
Leute, die "das Mail" sagen, zitieren auch für gewöhnlich die
gesamte Mail nach ihrer Antwort.
Re: Umstieg PHP4->PHP5: Vererbung geht nicht.
am 22.03.2007 23:58:20 von Martin Lemke
Konni Scheller schrieb:
>> Mie kompiliert man php?
>
> Dieser Satz kein Deutsch.
Du musst das M um 180 Grad drehen ;-)
M.
Re: Umstieg PHP4->PHP5: Vererbung geht nicht.
am 23.03.2007 01:09:42 von kscheller
Martin Lemke wrote:
> Du musst das M um 180 Grad drehen ;-)
Du heißt Wartin Lewke?
Konni,
verwirrt.
--
Leute, die "das Mail" sagen, zitieren auch für gewöhnlich die
gesamte Mail nach ihrer Antwort.
Re: Umstieg PHP4->PHP5: Vererbung geht nicht.
am 23.03.2007 10:02:58 von Ulf Kadner
Martin Lemke schrieb:
>> Schon bei der Kompilierung
> Mie kompiliert man php?
Da PHP als Interpiller bezeichnet wird, sollte das schon vermuten lassen
das da was im Hintergrund *pilliert. Allerdings handelt es sich hier um
temporäre Runtime-Kompilate die vom Interpiller nur während der Laufzeit
(sozusagen OnTheFly) generiert & genutzt werden. Als Developer bekommt
man davon nix mit.
MfG, Ulf
Re: Umstieg PHP4->PHP5: Vererbung geht nicht.
am 23.03.2007 11:11:53 von Ulf Kadner
Ulf Kadner schrieb:
> Da PHP als Interpiller bezeichnet wird, sollte das schon vermuten lassen
> das da was im Hintergrund *pilliert. Allerdings handelt es sich hier um
> temporäre Runtime-Kompilate die vom Interpiller nur während der Laufzeit
> (sozusagen OnTheFly) generiert & genutzt werden. Als Developer bekommt
> man davon nix mit.
str_replace('pill', 'pil');
MfG, Ulf
Re: Umstieg PHP4->PHP5: Vererbung geht nicht.
am 23.03.2007 12:44:55 von Helmut Chang
Ulf Kadner schrieb:
>> Da PHP als Interpiller bezeichnet wird, sollte das schon vermuten
>> lassen das da was im Hintergrund *pilliert. Allerdings handelt es sich
>> hier um temporäre Runtime-Kompilate die vom Interpiller nur während
>> der Laufzeit (sozusagen OnTheFly) generiert & genutzt werden. Als
>> Developer bekommt man davon nix mit.
Jain. Man bekommt nichts mit davon, wenn man das Skript laufen lässt.
Man bekommt aber was mit davon, wenn man beispielsweise solche
Konstrukte versucht:
class Foo {
const X = 'Blah';
const Y = self::X.'Blah';
}
Der const-Ausdruck wird AFAIK zur Compile-Time ausgewertet, der
String-Concatenator aber erst zur Laufzeit. Deshalb geht die zweite
Konstante nicht, obwohl es auch ein konstanter Ausdruck wäre.
gruss, heli
Re: Umstieg PHP4->PHP5: Vererbung geht nicht.
am 23.03.2007 13:24:11 von Claus Reibenstein
Martin Lemke schrieb:
> Konni Scheller schrieb:
>
>> Schon bei der Kompilierung
>
> Mie kompiliert man php?
Das passiert vollautomatisch im Hintergrund, wenn man ein PHP-Script
aufruft.
Gruß. Claus
Re: Umstieg PHP4->PHP5: Vererbung geht nicht.
am 23.03.2007 13:26:14 von Ulf Kadner
Helmut Chang schrieb:
>>> Da PHP als Interpiller bezeichnet wird, sollte das schon vermuten
>>> lassen das da was im Hintergrund *pilliert. Allerdings handelt es
>>> sich hier um temporäre Runtime-Kompilate die vom Interpiller nur
>>> während der Laufzeit (sozusagen OnTheFly) generiert & genutzt werden.
>>> Als Developer bekommt man davon nix mit.
>
> Jain.
Natürlich ist PHP ein Interpiller!
> Man bekommt nichts mit davon, wenn man das Skript laufen lässt.
Habe nix gegenteiliges behauptet.
> Man bekommt aber was mit davon, wenn man beispielsweise solche
> Konstrukte versucht:
>
> class Foo {
> const X = 'Blah';
> const Y = self::X.'Blah';
> }
>
> Der const-Ausdruck wird AFAIK zur Compile-Time ausgewertet, der
> String-Concatenator aber erst zur Laufzeit.
Das bekommt man nur bei Fehler auf indirekte Weise mit. Davon sprach ich
aber nicht! Ich sprach vom Kompilat. Zeig mir doch mal ohne großartige
Verrenkungen das (Pre)Kompilat eines PHP-Sources.
> Konstante nicht, obwohl es auch ein konstanter Ausdruck wäre.
Warum erklärst Du mir das? Hast Du den Eindruck ich hätte PHP nicht
verstanden?
Ich hab doch gesagt davon bekommt man als Developer nix mit. Von Fehlern
(indirekter Zusammenhang) sprach ich bewust nicht. Also was willst Du
mir sagen?
MfG, Ulf
Re: Umstieg PHP4->PHP5: Vererbung geht nicht.
am 23.03.2007 15:13:25 von do.not.REMOVETHAT
Ulf Kadner schrieb:
> Da PHP als Interpiller bezeichnet wird, sollte das schon vermuten lassen
> das da was im Hintergrund *pilliert.
Pillern? Ich kenn' nur "pullern".
Grüße, Matthias
--
http://www.trullala.de
--
Der Trend geht ganz eindeutig zur Zweitsignatur.
Re: Umstieg PHP4->PHP5: Vererbung geht nicht.
am 23.03.2007 15:53:19 von Ulf Kadner
Matthias P. Wuerfl schrieb:
> Pillern? Ich kenn' nur "pullern".
Na immerhin! ;-)
MfG, Ulf
Re: Umstieg PHP4->PHP5: Vererbung geht nicht.
am 24.03.2007 02:02:41 von oliver.graetz
Martin Lemke schrieb:
> Mie kompiliert man php?
Man zieht sich die Quellcodes für PHP von php.net und kompiliert es.
OLLi
--
"Doomsday device you say?"
[Prof. Farnsworth, Futurama 314]
Re: Umstieg PHP4->PHP5: Vererbung geht nicht.
am 24.03.2007 08:16:06 von Martin Lemke
Claus Reibenstein schrieb:
> Das passiert vollautomatisch im Hintergrund, wenn man ein PHP-Script
> aufruft.
Zum Hintergrund meiner Frage:
Ich dachte immer von Kompilieren spräche man nur, wenn eine binäre Datei
(ggf. sogar fertig geklinkte) Datei daraus erzeugt würde und ansonsten
hieße es, Interpretieren. Ist das falsch?
Einen php-Compiler würde ich mir sogar wünschen.
Martin
Re: Umstieg PHP4->PHP5: Vererbung geht nicht.
am 24.03.2007 08:17:10 von Martin Lemke
Oliver Grätz schrieb:
> Man zieht sich die Quellcodes für PHP von php.net und kompiliert es.
Ich dachte, es ginge um die Skripte. Warum sollte man den Source selber
kompilieren?
Martin
Re: Umstieg PHP4->PHP5: Vererbung geht nicht.
am 24.03.2007 09:43:41 von oliver.graetz
Martin Lemke schrieb:
> Oliver Grätz schrieb:
>
>> Man zieht sich die Quellcodes für PHP von php.net und kompiliert es.
>
> Ich dachte, es ginge um die Skripte. Warum sollte man den Source selber
> kompilieren?
Muss ich demnächst doch wieder Tags machen?
*g*
--
"I'm bitter? Who's drunk and yelling at a dead woman?"
[Lisa, 6Fu 501]
OT: Was ist ein Compiler (Re: Umstieg PHP4->PHP5: Vererbung gehtnicht.)
am 24.03.2007 10:12:50 von Heiko Richler
Martin Lemke wrote:
> Ich dachte immer von Kompilieren spräche man nur, wenn eine binäre Datei
> (ggf. sogar fertig geklinkte) Datei daraus erzeugt würde und ansonsten
> hieße es, Interpretieren. Ist das falsch?
Ein Compiler übersetzt ein Programm von einer Sprache in eine andere
Sprache. Das Programm (sollte) dabei nicht verändert werden.
Meistens meinen wir eine Hochsprache in Maschinencode und der wird dann
mit weiterem Code zu einem Programm gelinkt.
Bei Java z.B. wird nach Bytecode übersetzt. Die Java Virtual Machine ist
dann ein Interpreter für Bytecode.
Dagegen ist oft das was wir Interpreter nennen ein Just-In-Time-Compiler
der den Code sofort danach ausführt.
Was PHP ist kann ich nicht sagen. Aber es gibt meines Wissens für PHP
Cachesysteme welche PHP Seiten beim ersten Aufruf Compilieren und das
Ergebnis cachen. Weitere Aufrufe laufen also schneller.
Außerdem gibt es einige Transcompiler die Code für Hochsprachen
erzeugen. Bei Qt kann in einem erweiterten C++ entwickelt werden. Dieser
Code wird dann erst mal nach C++ übersetzt der dann normal übersetzt
werden kann. Der Präprozessor bei C ist auch nur so ein Compiler.
Heiko
Re: OT: Was ist ein Compiler (Re: Umstieg PHP4->PHP5: Vererbung gehtnicht.)
am 24.03.2007 11:36:19 von oliver.graetz
Heiko Richler schrieb:
>
> Was PHP ist kann ich nicht sagen. Aber es gibt meines Wissens für PHP
> Cachesysteme welche PHP Seiten beim ersten Aufruf Compilieren und das
> Ergebnis cachen. Weitere Aufrufe laufen also schneller.
PHP arbeitet wie Java mit einer Zwischensprache, den sogenannten
Opcodes. Die Zend Engine *kompiliert* das Skript (pro Datei) in Opcodes,
die anschließend vom *Executor* ausgeführt werden. Die Opcodes sehen
ähnlich wie Assembler aus und haben ein fixes Format.
Ein Opcode-Cache kann nun die Ergebnisse des Compilers zwischenspeichern
und bei nachfolgenden Anfragen kann der Kompilierschritt entfallen. In
gewisser Weise ist das, was ein Opcode-Cache generiert, mit den .class
Dateien von Java vergleichbar. Eine Auslieferung in Form von
Opcode-Dateien macht jedoch keinen Sinn, weil bereits beim
Kompilierschritt die Systemunabhängigkeit teilweise verloren geht.
vgl. http://talks.php.net/show/php-ticks
OLLi
--
Lisa: "Kaffee?"
Jürgen: "Zwei!!"
[ViB]
Re: Umstieg PHP4->PHP5: Vererbung geht nicht.
am 25.03.2007 00:48:18 von Helmut Chang
Ulf Kadner schrieb:
>> Jain.
>
> Natürlich ist PHP ein Interpiller!
Das Jain bezog sich rein auf "Der Developer bekommt davon nichts mit".
>> Der const-Ausdruck wird AFAIK zur Compile-Time ausgewertet, der
>> String-Concatenator aber erst zur Laufzeit.
>
> Das bekommt man nur bei Fehler auf indirekte Weise mit. Davon sprach ich
> aber nicht!
Aber ich ;-).
>> Konstante nicht, obwohl es auch ein konstanter Ausdruck wäre.
>
> Warum erklärst Du mir das? Hast Du den Eindruck ich hätte PHP nicht
> verstanden?
Davon sprach ich wiederum nicht. Diesen Eindruck habich in keinster Weise.
> Ich hab doch gesagt davon bekommt man als Developer nix mit. Von Fehlern
> (indirekter Zusammenhang) sprach ich bewust nicht.
Wie bereits gesagt: aber ich.
> Also was willst Du
> mir sagen?
Gar nichts. Mein Posting war als Ergänzung zu deinem gedacht, wo ich
anhand des Beispiels mit den Konstanten aufzeigen wollte, dass PHP sehr
wohl auch kompiliert wird.
gruss, heli
Re: Umstieg PHP4->PHP5: Vererbung geht nicht.
am 25.03.2007 12:54:43 von Claus Reibenstein
Martin Lemke schrieb:
> Oliver Grätz schrieb:
>
>> Man zieht sich die Quellcodes für PHP von php.net und kompiliert es.
>
> Ich dachte, es ginge um die Skripte. Warum sollte man den Source selber
> kompilieren?
Weil man ihn an eigene Bedürfnisse angepasst hat. Weil man ein eigenes
Linux/Unix/Windows/Sonstwas benutzt, für das es kein fertiges Binary gibt.
Das ist das, war mir spontan dazu einfällt.
Unabhängig davon denke ich auch, dass es um die Scripte ging. Ebenso
denke ich, dass Oliver das auch weiß :-)
Gruß. Claus
Re: Umstieg PHP4->PHP5: Vererbung geht nicht.
am 25.03.2007 23:08:39 von Martin Lemke
Oliver Grätz schrieb:
> Muss ich demnächst doch wieder Tags machen?
Und das mir, der ich fast nie Smileys setze.
Martin