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….

  1. <?php
  2. class Foo {
  3.  
  4.     private $nr = 1337;
  5.  
  6.     private function bar () {
  7.         return (int) $this->nr;
  8.     }
  9.  
  10.     private function foo ($nr) {
  11.         if ($nr >= 1338) {
  12.             ErrorHandler::throwManual (‘there is no ‘ . $nr . ‘  here’);
  13.         }
  14.     }
  15.  
  16.     public function test () {
  17.         $this->foo($this->bar());
  18.     }
  19. }
  20.  
  21. $temp = new Foo();
  22. $temp->test();
  23.  
  24. ?>

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

  1. <?php
  2. foreach ($allItems as $index => $item) {
  3.     if ( ! $item instanceOf Bar) {
  4.         continue;
  5.     }
  6.     if ($item instanceOf Foo) {
  7.         // more code….
  8.     }
  9.     unset ($allItems[$index]);
  10. }
  11. ?>

Kobolde! Verflucht! Wie soll man so arbeiten…. Ich will meine Variablen wieder zurück.

Leave a Reply

Ihr Browser versucht gerade eine Seite aus dem sogenannten Internet auszudrucken.

Das Internet ist ein weltweites Netzwerk von Computern, das den Menschen ganz neue Möglichkeiten der Kommunikation bietet.

Da einige von neuen Dingen nichts verstehen, halten wir es für notwendig, sie davor zu schützen. Dies ist im beidseitigen Interesse, da unnötige Angstzustände bei Ihnen verhindert werden, ebenso wie es uns vor profilierungs- und machtsüchtigen Menschen schützt.

Sollten Sie der Meinung sein, dass Sie diese Internetseite dennoch sehen sollten, so können Sie jederzeit durch normalen Gebrauch eines Internetbrowsers darauf zugreifen. Dazu sind aber minimale Computerkenntnisse erforderlich. Sollten Sie diese nicht haben, vergessen Sie einfach dieses Internet und lassen uns in Ruhe.

Die Umgehung dieser Ausdrucksperre ist nach §95a UrhG verboten.
Quelle: http://www.gesetze-im-internet.de/urhg/__95a.html