[PHP5] Warum keine Fehlermeldung?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Original geschrieben von MaxPayne
    Standardgequatsche, das hat überhaupt nichts mit dem Thema zu tun.
    zurück zum therma, php benutzt eine dynamische typisierung, wenn dir das nicht passt, benutze eine andere sprache.

    Kommentar


    • #17
      Original geschrieben von 3DMax
      zurück zum therma, php benutzt eine dynamische typisierung, wenn dir das nicht passt, benutze eine andere sprache.
      Das weiß ich, aber dynamische Typisierung hat in erster Linie nichts mit ordentlichen Implementierung von Objektorientierung zu tun.

      Kommentar


      • #18
        mir gefehlt so ein verhalten auch nicht besonders, da ich schon oft gesehen habe, dass die manche Leute diese technik extra anwenden um sich arbeit zu sparen.
        Am ende werden Sie bei fehlersuche selbst dafür beschtrafft, dass sie die Variblen nicht an richtiger stelle declariert haben.
        Sonnst sehe ich kein verbrechen daran.
        bei Java würde mich so was wundern, bei PHP kaum.
        Slava
        bituniverse.com

        Kommentar


        • #19
          hi,

          hatte ein ähnliches problem (siehe: fatal error mit selbst definiertem error_hanlder abfangen) und folgendes ist im prinzip zufriedenstellend für mich:
          PHP-Code:
          <?php
          error_reporting
          (E_ALL E_STRICT);

          class 
          Test {
              private 
          $test;

              public function 
          __construct() {
                  
          set_error_handler(array($this'error_handler'));   
              }

              public function 
          __call($method$val)  {
                  
          trigger_error('method "'.$method.'" does not exist.');
              }

              public function 
          __set($var$val)  {
                  
          trigger_error('variable "'.$var.'" does not exist.');
              }
              
              public function 
          __get($var)  {
                  
          trigger_error('variable "'.$var.'" does not exist.');
              }

              public function 
          error_handler($code$message$file$line) {
                  echo 
          "<p>$code$message @ $file$line</p>";
              }
              
              public function 
          setTest($val) {
                  
          $this->test $val;
                  
          $this->setNotDefinedVariable "?";
              }
          }

          $test = new Test();
          $test->setTest("hello world");
          $test->callNotDefinedFunction();
          $test->foo "bar";
          ?>
          vielleicht hilft es dir bei deinem problem auch weiter...

          Kommentar


          • #20
            Ja, das wäre durchaus eine Lösung. Ich müsste dann zwar jedes meiner Objekte von diesem Ableiten, aber das ist eigentlich ganz nützlich, da man hier gleich ein Standardverhalten für Business-Objekte festlegen kann (Logger, clone-Verhalten, unique ID, String-Repräsentation, automatische Getter- und Setter für Eigenschaften). Obwohl auf der anderen Seite natürlich für jedes wieder ein Overhead entsteht...ist ne Geschmacks- und letzten Endes auch ne Performancefrage.

            Aber grundsätzlich müsste das die Sprache selbst bieten, wenigstens bei E_STRICT.

            Kommentar


            • #21
              und wie würdest du dan von eine Methode aus etwa so machen
              $this->$ding=$nochwas;
              um dynamish neue eigenschaften zu erzeugen?
              wieder __set() überschreiben?

              ne! ich danke PHP, dass so eine möglichkeit gegeben ist.
              pass besser auf, was du da programmierst.
              Es ist in PHP möglich die Eigenschaften zur laufzeit zu erweitern und es muss auch so bleiben.
              Wer spass am Reflection hat, der kann auch zu Java umschteigen.
              Slava
              bituniverse.com

              Kommentar


              • #22
                Richtig, über __set(), denn dafür ist es da.

                Kommentar

                Lädt...
                X