Immernoch wirrwarr
Wir haben die PHP Version auf dem Server geändert… die anderen Scripts (Post davor) laufen nun auch wieder so wie “geplant” – aber:
Durch einen Fehler (den ich auch noch suche – weil genauso ähm… komisch) wurde diese Methode (Namen geändert) nicht mit einem Integer sondern mit einem Objekt aufgerufen. (zumind. sagt mir mein Backtrace Foo::foo (Foo) usw..) Auch wenn keiner $nr hier ändern darf – egal. Da kommt aufjedenfall eine Instanz von “Foo” raus bei (int) $this->nr;
Ok, also ich glaub der Webserver will mich einfach nur ärgern….
-
<?php
-
class Foo {
-
-
private $nr = 1337;
-
-
private function bar () {
-
return (int) $this->nr;
-
}
-
-
private function foo ($nr) {
-
if ($nr >= 1338) {
-
ErrorHandler::throwManual (‘there is no ‘ . $nr . ‘ here’);
-
}
-
}
-
-
public function test () {
-
$this->foo($this->bar());
-
}
-
}
-
-
$temp = new Foo();
-
$temp->test();
-
-
?>
Jetzt möchte man meinen bei $nr >= fliegt das Script mit “Object of class Foo could not be converted to integer” nein…. sondern in der nächsten Zeile – wohl gemerkt jetzt müsste $nr >= 1338 also irgendwie auf Integer “converted” sein und dann noch größer als 1338 – aber – nein String converted ist nicht drin “Object of class Foo could not be converted to string“…
Naja es geht noch besser “Illegal offset type in unset” und zwar bei so nem Code … und nein $index wird nirgends in den Zeilen dazwischen (sind nur 10) überschrieben – und nein, global isses auch nicht
-
<?php
-
foreach ($allItems as $index => $item) {
-
if ( ! $item instanceOf Bar) {
-
continue;
-
}
-
if ($item instanceOf Foo) {
-
// more code….
-
}
-
}
-
?>
Kobolde! Verflucht! Wie soll man so arbeiten…. Ich will meine Variablen wieder zurück.
