Mailinglisten-Archive |
Peter Bieling schrieb:
> Sebastian Mendel schrieb:
>
>>>> Auch nicht sauber, aber vielleicht die bessere Lösung.
>>> danke, das habe ich jetzt so übernommen. Die Variante von Sebastian
>>> funktioniert bei mir zwar auch, ich weiß aber nicht, ob in allen Versionen.
>> in allen Versionen, hat nichts mit clone oder clone() oder OOP zu tun,
>> sondern damit das clone als Schlüsselwort behandelt wird und clone() als
>> Funktion, und ob Funktionen tatsächlich existieren wird erst überprüft wenn
>> die Zeile tatsächlich ausgeführt wird ...
>
> danke, die Erklärung für PHP4 leuchtet mir ein. Was ist aber mit dem
> Einwand von Mr. Wittens?
> http://acko.net/node/54
> "PHP 4 on the other hand will think clone() is a function. [...]
das Problem tritt doch aber nur auf, weil er in diesem Moment clone()
probiert (was in PHP 5 funktioniert), und er jetzt feststellt was passiert
wenn dieser Code in PHP 4 läuft - wir sind doch aber schon viel weiter, denn
clone() wird gar nicht ausgeführt wenn PHP 4 läuft ...
das End-Ergebnis:
function drupal_clone($object) {
return version_compare(phpversion(), '5.0') < 0 ? $object : clone($object);
}
ist doch selbe wie:
if (version_compare(PHP_VERSION, "5.0.0", "<") > 0) {
$pdfcopy = $pdf;
} else {
$pdfcopy = clone($pdf);
}
wie
$pdfcopy = (version_compare(PHP_VERSION, "5.0.0", "<") > 0) ? $pdf :
clone($pdf);
wie
$pdfcopy = (version_compare(PHP_VERSION, "5.0") < 0) ? $pdf : clone($pdf);
> usw. Also auch wieder eval().
>
> Da ich keine Fehlermeldung bei PHP5 festgestellt habe, ist die Frage, ob
> frühere PHP5 Versionen Zicken machen, wenn man ihnen clone ($obj) statt
> clone $obj vorsetzt.
wohl eher PHP 4 ...
--
Sebastian
php::bar PHP Wiki - Listenarchive