foomaker: NULL oder '' oder Wert?

Tach zusammen,

gegeben sei eine Funktion

  
function func($val)  
{  
...  
}  

Die Angabe von $val soll beim Aufruf von func optional sein.
Deshalb initialisiere ich sie direkt mit ... äh ... ja womit?

Da $val auch einfach "Nichts" sein kann, könnte die Deklaration
function func($val=''){...}
oder aber auch
function func($val=NULL){...}
lauten.
Im Funktionsblock prüfe ich also
entweder if($var!='')... oder if(!is_null($var))...

Was bevorzugt Ihr, einen Leerstring oder NULL oder vielleicht sogar was anderes und warum?

Gruß vom foomaker

--
Natürlich glaube ich an die Existenz von Ausserirdischen. Schliesslich gibt es ja auch das PERFEKTE SCRIPT.
  1. Hello,

    Was bevorzugt Ihr, einen Leerstring oder NULL oder vielleicht sogar was anderes und warum?

    ich denke das kommt auf "func" an - du gibst schließlich einen Default-Wert vor, nur die Semantik der Funktion kann darüber Auskunft geben, wie mit dem Standardfall zu verfahren ist.
    Aus Sicht eines Datenbankmenschen bevorzuge ich die NULL-Initialisierung, weil Leerstring eine von NULL abweichende Semantik hat: es ist ein Wert, nämlich ein leerer String, während NULL die Abwesenheit eines Wertes darstellt.

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    Vegetarier essen meinem Essen das Essen weg.
    1. Hallo Rouven,

      Hello,

      | Was bevorzugt Ihr, einen Leerstring oder NULL oder vielleicht sogar was anderes und warum?
      ich denke das kommt auf "func" an - du gibst schließlich einen Default-Wert vor, nur die Semantik der Funktion kann darüber Auskunft geben, wie mit dem Standardfall zu verfahren ist.

      Die Funktion ist eigentlich der Konstruktor einer Klasse. Der Parameter ist eine userid oder eben nichts, wenn es zum user eben noch keine ID gibt, dieser also neu angelegt werden muss.

        
      function __construct($uid=NULL)  
      {  
        if(!is_null($uid))  
        {  
          // user vorhanden  
        }  
        else  
        {  
          // neuer user  
        }  
      }  
      
      

      Gruß vom foomaker

      --
      Natürlich glaube ich an die Existenz von Ausserirdischen. Schliesslich gibt es ja auch das PERFEKTE SCRIPT.
      1. echo $begrüßung;

        Die Funktion ist eigentlich der Konstruktor einer Klasse. Der Parameter ist eine userid oder eben nichts, wenn es zum user eben noch keine ID gibt, dieser also neu angelegt werden muss.

        Dann null oder vielleicht auch 0 oder -1, aber kein Leerstring, denn die ID wird sicherlich nummerisch sein. Da du den Wert ja nicht weiterverarbeitest sondern nur darauf eine Fallunterscheidung anwendest (nehme ich stark an), ist es im Prinzip egal.

        echo "$verabschiedung $name";

    2. Hoi!

      Kann man in php nicht mehrere Konstruktoren fuer eine Klasse erstellen? Also z.b. einen parameterlosen und einen parametrisierten Konstruktor? Ich habe damals mit php selten objektorientiert programmiert und mit php5 noch gar keine Erfahrung sammeln duerfen.

      --
      "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
            - T. Pratchett
      1. echo $begrüßung;

        Kann man in php nicht mehrere Konstruktoren fuer eine Klasse erstellen?

        Das geht unter PHP nicht. Da gibt es die Überladung von Methoden, so wie man sie anderswo kennt, nicht. Es gibt ja auch keine Variablentypen-Angaben, so dass man nicht unterscheiden kann, welche Version man nehmen soll. (TypeHinting gibt es nur für Klassen.)

        echo "$verabschiedung $name";

        1. echo $begrüßung;

          (TypeHinting gibt es nur für Klassen.)

          ... und Arrays, aber das macht das Kraut auch nicht fett.

          echo "$verabschiedung $name";

        2. Hiho!

          (<http://www.php.net/manual/en/language.oop5.typehinting.php@title

          =TypeHinting> gibt es nur für Klassen.)

          Ah. Interessante Information, die allerdings auch die Frage des Threaderstellers beantworten sollte: Nimm NULL. ;)

          --
          "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                - T. Pratchett
  2. echo $begrüßung;

    Die Angabe von $val soll beim Aufruf von func optional sein.
    Deshalb initialisiere ich sie direkt mit ... äh ... ja womit?

    Was auch immer du für die Erfüllung der Aufgabenstellung für sinnvoll hältst.

    Unter PHP wird null irgendwie auch als nicht vorhanden angesehen. Das zeigt sich schon daran, dass isset() bei einer Variablen mit dem Inhalt null ein false zurückgibt. is_null() und der Vergleich mit null hingegen ergibt true, was zeigt, dass die Variable tatsächlich da ist.

    entweder if($var!='')... oder if(!is_null($var))...
    Was bevorzugt Ihr, einen Leerstring oder NULL oder vielleicht sogar was anderes und warum?

    Ich bevorzuge $var === null repektive $var !== null statt der Funktion is_null(). Dabei entfällt ein Funktionsaufruf (ist aber nur nutzlose Mikrooptimierung). Die Antwort auf die Frage nach Leerstring oder null hängt von der konkreten Aufgabenstellung ab.

    Außerdem gibt es da noch die Function handling Functions func_num_args(), func_get_args() und func_get_arg().

    echo "$verabschiedung $name";

  3. Hallo

    Danke an alle für Beiträge und Tipps. Hat geholfen.

    Gruß vom foomaker

    --
    Natürlich glaube ich an die Existenz von Ausserirdischen. Schliesslich gibt es ja auch das PERFEKTE SCRIPT.