ZF definiert viele Variablen neu z.B. (int)

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

  • ZF definiert viele Variablen neu z.B. (int)

    Hi.
    Kann mir jemand sagen, warum das ZendFramework sehr oft (aber nicht immer!) eine Variable, z.B. ein Parameter nochmals extra deklariert mit z.B. (int) oder (string) oder sogar (array) ?

    Was für ein Sinn steckt dahinter?

    Danke

  • #2
    Das ist ein Versuch nachträglich die Typisierung in PHP einzuführen :-)
    Ausserdem ist es gut zu wissen, welche Typen eigentlich die Funktion als Parameter bekommt oder zurück gibt.
    Slava
    bituniverse.com

    Kommentar


    • #3
      Das sind doch normale Type Casts, oder? Hast du mal ein Code-Beispiel?

      Kommentar


      • #4
        Ich nehme an, du meinst Stellen, andenen Type Hints in der Signatur nicht gehen (weil PHP AFAIK dort keine primitiven Typen zulässt), oder weil einfach zum Beispiel ein String oder ein Array übergeben werden kann (beides aber später wie ein Array behandelt wird).

        Aber ein Beispiel wäre nicht schlecht.
        [FONT="Helvetica"]twitter.com/unset[/FONT]

        Shitstorm Podcast – Wöchentliches Auskotzen

        Kommentar


        • #5
          Na klar. Weiter unten 3 Beispiele aus dem ZF.

          Ich für meine teil bezeichne eine Variable immer mit dem entsprechendem Datentyp.
          z.B. ist bei mir $resultSqlquery = $arrResultSqlquery ("arr" für "array)
          oder auch $intResultAddition.

          So weiß ich immer, auch weit unten im Code, was genau nochmal der Datentyp ist.
          Ich könnte auch überall, jedesmal (int) oder (string) vorsetzen, finde ich aber übertrieben.
          Eigentlich bräuchte man ja nichteinmal wie ich es mache in jeder deklaration den Datentyp mit einbringen, aber ich machs halt einfach.

          Unf das ZF gibt mir da wieder bedenken weil die eben z.B. (string) davor setzen.

          Lange Rede kurzer Sinn, die Beispiele:
          PHP-Code:
          public function __construct(array $params)
          // Hier müsste z.B. klar sein, dass $params eine array ist.
          // Weil kein Programmierer einer Funktion mit array erwartung keinen string o.ä.
          // übergeben würde oder gar eine leere variable. 
          PHP-Code:
          public function setValidateMx($allowed)
              {
                  
          $this->_validateMx = (bool) $allowed;
              } 
          oder auch

          PHP-Code:
          public function isValid($value)
              {
                  
          $valueString = (string) $value;
                  
          $matches     = array();
                  
          $length      true
          Dem Programmierer muss doch klar sein, welchen Datentyp er übergibt...

          Kommentar


          • #6
            PHP kennt keine Type Hints für skalare Typen. Diesen Mangel gleichen die Casts in deinen Beispielen aus.
            Klar sollte der Programmierer wissen welchen Datentyp seine Variablen haben. Aber die Entwickler des ZF verlassen sich eben nicht darauf und forcieren den erwarteten Typ durch nachträgliches casten. Würde PHP skalara Type Hints zulassen, wäre genau das gleiche schon bei der Übergabe des Wertes an die Funktion passiert. PHP hätte dann intern gecastet.

            Kommentar

            Lädt...
            X