Typenangabe in Methoden
Sympathizer
- php
0 dedlfix0 Rouven0 Dennis0 Danke..
Sympathizer
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
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";
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
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.
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