arguments in functie
Het argument $bar moet nu een array zijn anders krijg je een foutmelding. Kun je echter ook afdwingen dat $bar een getal of een string moet zijn?
Type hinting, zoals deze techniek heet, laat alleen toe dat je objecten of arrays hint. Geen platte datatypes (dat zou ik ook wel leuk vinden ja).
http://php.net/manual/en/language.oop5.typehinting.php
Dus je kunt wel een array afdwingen, maar niet een getal of een string... very strange!
Dat is niet eens heel gek doordat PHP de basis dataypes heel makkelijk transformeert naar een ander datatype. (1 == '1' bijvoorbeeld)
Mja, zelf controleren kan wel, maar zou toch handig zijn als PHP dit voor je doet. Waarom bji een array wel en bij een string niet? Is en blijft vreemd.
Sja, en 'waarom'... bij de implementatie van type hinting is kennelijk gekozen voor een is_object-achtige test. Typisch zo'n ontwerpkeuzeding. Iemand met meer interne php-kennis mag me verbeteren...
Ozzie PHP op 29/11/2010 13:31:57:
maar zou toch handig zijn als PHP dit voor je doet.
Goh...
Als je dan die error message krijgt, dan is het nog steeds aan jou (de scripter) om daar iets mee te doen, he.
Ik ga er van uit dat je niet wil dat de gebruiker wordt geconfronteerd met berichten als "Catchable fatal error: Argument 1 passed to foo() must be an array, string given, called in D:\xamp\htdocs...".
Dus, of php nu die fout aanroept of niet, je moet toch ergens controleren of je functie parameters krijgt met de juiste datatypes.
Volgens mij is een is_array() check gemakkelijker dan een catch($e) regelen.
mmja, hangt er vanaf.. als het een interne functie is die geen user input ontvangt maar wel een array verwacht dan mag er van mij best een error optreden als ik een string aanlever in plaats van een array.