Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] PHP5-Typensicherheit

Einklappen

Neue Werbung 2019

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

  • [Erledigt] PHP5-Typensicherheit

    Servus,

    die optionale Typensicherheit ist ein tolles Ding, aber leider seh ich keine elegante Möglichkeit, statt eines Objekts NULL zu übergeben, was in vielen Fällen notwendig wäre.

    Von der Methodenüberladung nehm ich Abstand, weil das einfach eklig gelöst ist.

    Ist euch dasselbe Problem untergekommen? Wie macht ihr das?


  • #2
    php5.1 wird's unterstützen. bis dahin muss man damit leben... wobei ich normalerweise eh ein
    assert(!is_null($param)); stehen habe ...

    Kommentar


    • #3
      Wow, da bin ich froh. Ich such gleich mal nach der entsprechenden Aussage auf php.net.

      Kommentar


      • #4
        Zitat von axo
        php5.1 wird's unterstützen.
        Wo hast du das aufgeschnappt? Ich find's nicht.

        Kommentar


        • #5
          Wieso ist das Overloading ekelig?

          Zitat von HStev
          Genauso wie es jetzt mittels __call möglich ist Methoden zu überladen wenn es auch auf den 1. Blick etwas merkwürdig aussieht.

          PHP-Code:
          <?php
          class MethodNotExistsException extends Exception {}
          class 
          Foo
          {
              public function 
          __call($methode$params)
              {
                  
          $FUNCTION "_" $methode "_" ;
                  
                  foreach (
          $params as $param)
                  {
                      
          $FUNCTION .= '_' gettype($param);
                  }
                  
                  if (!
          method_exists($this$FUNCTION))
                      throw new 
          MethodNotExistsException();
                  
                  return 
          call_user_method($FUNCTION$this$params);
              }
              
              protected function 
          _bar__string_string($params
              {
                  return 
          $params[0] . $params[1];
              }
              
              protected function 
          _bar__string_integer($params)
              {
                  
          $ret "";
                  for (
          $i=1$i<= $params[1]; $i++)
                  {
                      
          $ret .= $params[0];
                  }
                  return 
          $ret;
              }
          }

          $F = new FOO();

          echo 
          $F->bar("Hallo ""Welt");
          echo 
          "
          "
          ;
          echo 
          $F->bar("Hallo
          "
          3);
          ?>
          Aus Thread: http://www.phpfriend.de/forum/ftopic50049.html
          Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

          Kommentar


          • #6
            Weil man auch Benutzerfreundlichkeit für den Programmierer erwarten kann. Dafür gibt's ja OOP. Und dieses behelfsmäßige, unübersichtliche und aufwändige Konstrukt für Überladungen würde ich nicht darunter verstehen.

            Kommentar


            • #7
              Ich find das recht gut gelöst wie willst das sonst lösen wenn PHP nicht explizit einen Typ verlangt?
              ... wenn das eingeführt würde währe PHP nicht mehr abwärtskompatible

              Unübersichtlich find ich das überhaupt nicht.

              Zitat von axo
              php5.1 wird's unterstützen.
              Type Hints können nur vom Typen object und (seit PHP 5.1) array sein. Traditionelles Type Hinting mit int und string wird nicht unterstützt.
              http://www.php.net/manual/de/languag...ypehinting.php

              PHP5.1 wird dann nur zusätzlich noch Arrays als TypeHinting Typ unterstützen ... mich würde auch mal interesieren woher du das hast?
              Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

              Kommentar


              • #8
                Code:
                protected function _bar__string_string($params)
                Ich find das auch scheisse
                Ne bessere Lösung fällt mir aber auch nicht ein, ich werd solche Konstrukte aber auch nicht verwenden!

                Kommentar


                • #9
                  Zitat von HStev
                  Ich find das recht gut gelöst wie willst das sonst lösen wenn PHP nicht explizit einen Typ verlangt?
                  ... wenn das eingeführt würde währe PHP nicht mehr abwärtskompatible
                  Quatsch mit Soße
                  Ich würde es lösen wie in C++ oder Java. So:

                  Code:
                  class CSample {
                      public function method(CString $value)
                      {
                      }
                      public function method(CInteger $value)
                      {
                      }
                      function alt($value)
                      {
                      }
                      // usw.
                  }
                  Bis PHP5 wurde nie mit Type-Hinting gearbeitet. Also würde die Methode "alt" nach wie vor funktionieren.

                  Kommentar


                  • #10
                    das wäre der gleiche Mist wie jetzt auch wenn dann explizite Typenangabe oder gar keine
                    Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

                    Kommentar


                    • #11
                      Hä? Wo sind deine Gedanken nur? Ich versteh deine Logik nicht...

                      Kommentar


                      • #12
                        Ich auch nicht. Stimme Saraneus zu.

                        Suchst du das hier?
                        http://www.php.net/manual/en/languag...ypehinting.php
                        privater Blog

                        Kommentar


                        • #13
                          Zitat von Saraneus
                          Zitat von axo
                          php5.1 wird's unterstützen.
                          Wo hast du das aufgeschnappt? Ich find's nicht.
                          ich hätt's auch nicht gefunden, hätte ich nicht den link hierzu http://www.derickrethans.nl/typehints_and_null.php gestern per mail bekommen.

                          Kommentar


                          • #14
                            Und was soll daran PHP5.1 spezifisch sein? Das ist doch jetzt schon möglich

                            ich habs noch auf der 1. Seite geschrieben

                            Zitat von HStev
                            Zitat von axo
                            php5.1 wird's unterstützen.
                            Type Hints können nur vom Typen object und (seit PHP 5.1) array sein. Traditionelles Type Hinting mit int und string wird nicht unterstützt.
                            http://www.php.net/manual/de/languag...ypehinting.php

                            PHP5.1 wird dann nur zusätzlich noch Arrays als TypeHinting Typ unterstützen ... mich würde auch mal interesieren woher du das hast?
                            Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

                            Kommentar


                            • #15
                              Fakt ist, das dieser Kram da mit __call und Co. dermaßen unübersichtlich ist, dass es für mich zumindest keine ernsthafte Alternative darstellt.

                              PHP5.1 wird dann nur zusätzlich noch Arrays als TypeHinting Typ unterstützen ... mich würde auch mal interesieren woher du das hast?
                              Auf was bezieht sich das "das"?
                              privater Blog

                              Kommentar

                              Lädt...
                              X