Ozzie, dat heb ik je al eens eerder uitlegt, maar maakt niet uit :) PHP kan zonder problemen "type jugglen" tussen ints en strings, dus als je een int geeft waar je een string verwacht maakt PHP gewoon leuk een string van die int. Als je een string hebt waar je een int verwacht gaat het iets krommer, maar het eind resultaat is hetzelfde: Je krijgt alsnog een int. ("abc123" wordt 123)
Een array kan PHP niet op die manier "type jugglen" naar een string of een int. Bij het omzetten naar een string krijg je "Array", totaal niet wat je verwacht. Bij het omzetten naar een int zal je 0 of 1 krijgen, en als je dat doet doormiddel van rekenoperator krijg je "Fatal error: Unsupported operand types".
Het typehinten van objecten is gewoon volledig omdat dat 1 van de keyprincipes is van OOP.
public function setProductProperties($code, array $properties) {
}
?>
Hier weet je dus dat $properties een array moet zijn, maar wat is $code? Een int of een string?
Ik denk trouwens dat het in de praktijk voldoende is om alleen objecten te typehinten. Als het goed is kun je aan de naam van de variabele zien of iets een array is, omdat de naam dan meervoud is: properties (array) versus property (string).
Ozzie, type hinting is alleen handig voor de code. Het maakt niet uit of het een int of een string is, aangezien het beide in beide gevallen bruikbaar is.
Dat een argument meervoudig of enkelvoudig heeft ook totaal geen nut, dat weet PHP niet. Het type hinten op classen en arrays heeft de code als doel, niet de documentatie.
Wat is dan het nut van het typehinten van een parameter? Dat is toch om te voorkomen dat je een verkeerd type opgeeft? Want als je dit hebt:
<?php
public function foo(array $bar) {
}
?>
En je geeft een int als argument in plaats van een array, dan krijg je een foutmelding. In die zin is het toch een vorm van documentatie, zodat je zelf weet wat $bar zou moeten zijn?
Een error is toch geen exception? Maar wat ik eigenlijk bedoel is... het is toch een soort documentatie? Het doet verder toch niets? Stel ik geen bijv. een int op ipv een array, dan maakt ie daar niet ineens een array van. Dus wat is dan het nut? Volgens mij alleen dat je kunt zien wat er voor type verwacht wordt...
[offtopic]
Ward, geef je aub even een gil als we te veel afdwalen, of als je nog vragen hebt?
[/offtopic]
Ik bedoel... in PHP is een error toch iets anders dan een Exception?
Oké... maar als ik dus het verkeerde type opgeef, dan volgt er een error. Het is niet zo dat dit type dan wordt omgezet naar het juiste type. Dat bedoel ik eigenlijk.