selfer: class, leerer inhalt soll ersetzt werden

Hallo,

ich habe mal so aus fun einen menschen 'klassifiziert' (zur übung) doch prompt habe ich ein problem.
wenn eine instanz der classe erstellt wird solle auch gleich mit __construct() werte mitgegeben werden.
etwas so:

  
$person=new mensch("Willy",58,"Deutsch","Männlich");  

wird kein wert angegeben soll der 'leere' wert durch 'unknown' ersetzt werden. z.b:

  
function __construct($a="unknown",$b=0,$c="unknwon",$d="unknown")  
 {  
   //Anweisungen  
 }  

also sollte nun wenn die classe erstellt wird und ein argument nicht
angegeben wird wie z.b das 'Willy' durch 'unknown' ersetzt werden.
man würde das dann ja so schreiben:

  
$person=new mensch("",58,"Deutsch","Männlich");  

aber das "" wird nicht durch 'unknown' ersetzt.
anscheinend wird es nicht als NULL oder wirklich leer erkannt.
wie kann man das ändern?

ich hoffe mal das es überhaupt jemand versteht was ich meine ;)
danke!

  1. n'abend,

    wird kein wert angegeben soll der 'leere' wert durch 'unknown' ersetzt werden. z.b:

    function __construct($a="unknown",$b=0,$c="unknwon",$d="unknown")
    {
       //Anweisungen
    }

      
    wie wärs denn hiermit?  
      
    ~~~php
    class Mensch  
    {  
      private $a;  
      private $b;  
      private $c;  
      
      public function __construct( $a=null, $b=null, $c=null )  
      {  
        $this->a = $a === null ? 'unknown' : $a;  
        $this->b = $b === null ? 2 : $b;  
        $this->c = $c === null ? array() : $c;  
      }  
    }  
      
    $someHuman = new Mensch(null,3,array('asd','blubb','foo'));
    

    Dann würdest du den Konstruktor auch so nutzen, wie man (oder zumindest ich) es für sinnvoll hält. null ist generell kein dummer Wert für "nicht gesetzt", wenn du null nicht gerade für etwas anderes (miss-)brauchst.

    wenn du auf php5 entwickelst und nicht unbedingt php4-kompatibel sein musst/willst, gewöhne dich doch an die "visibility-flags" (public,private,protected).

    weiterhin schönen abend...

    --
    Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
    sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
    1. Hi globe,

      danke! perfekte lösung!

      lesen uns

      mfg selfer