Sympathizer: Typenangabe in Methoden

Hallo allerseits,

Kann mir einer erklaeren, warum ich diesen Fehler bekomme?

  
Catchable fatal error: Argument 1 passed to DoSomething() must be an instance of string, string given,  
called in /var/www/phpl/test.php on line 12 and defined in /var/www/phpl/test.php on line 13  

Der Code:

  
DoSomething("string");  
function DoSomething(string $str)  
{  
  echo $str;  
}  

string != string ??

Mit freundlichen Gruessen,
Sympathizer

--
"Was ist ist, was nicht ist ist moeglich"
  1. echo $begrüßung;

    Kann mir einer erklaeren, warum ich diesen Fehler bekomme?
    Catchable fatal error: Argument 1 passed to DoSomething() must be an instance of string, string given,

    Das erste Argument muss ein Objekt vom Typ "string" sein, du hast aber einen String übergeben.

    function DoSomething(string $str)

    Das funktioniert so nicht. Type Hinting geht nur mit Klassen oder mit "array", nicht aber mit einfachen Typen. PHP hat ja eine eingebaute Typumwandlung. Wenn du dort beispielsweise einen Integer übergibst, würde der automatisch zum String werden. Es bringt da also nichts, den Parameter auf String festnageln zu wollen. Auch im weiteren Verlauf wird der Typ ja je nach Erfordernis automatisch gecastet.

    echo "$verabschiedung $name";

  2. Hello,

    googeln nach der Fehlermeldung weist darauf hin, dass man string als Typehint in PHP nicht verwenden kann, weil keine Klasse String existiert.
    Forumsfrage
    PHP-Manual: Type Hinting

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    Buy when there's blood running in the street and sell when everyone is pounding at your door, clawing to own your equities  --  Wisdom on Wallstreet
  3. Hi Sympathizer,

    Kann mir einer erklaeren, warum ich diesen Fehler bekomme?

    Siehe Type-Hinting im PHP-Manual:

    Type Hints can only be of the object and array (since PHP 5.1) type.
      Traditional type hinting with int and string isn't supported.

    Bei deiner Notation erwartet PHP also ein Objekt von der Klasse 'string' (die müsstest du vermutlich erst mal definieren).

    Viele Grüße,
      ~ Dennis.

  4. Hallo allerseits,

    hmm.. ich wuerde mich jetzt aufregen, aber nun gut:
    's ist halt so und man muss es hinnehmen ;-)

    Danke.

    Mit freundlichen Gruessen,
    Sympathizer

    --
    "Was ist ist, was nicht ist ist moeglich"