Hi Peter, Yes, NULL values are very useful to know.
I just would add a precision : I don't want the "mixed" datatype to be compeltely eradicated ! It could be judicious when the data type is unpredictable, like in this function : mixed|NULL array_pop (array &$array) Regards, Geoffray 2011/10/5 Peter Cowburn <petercowb...@gmail.com> > Hi Geoffray, > > On 5 October 2011 10:29, Geoffray Warnants <gwarna...@gmail.com> wrote: > > Dear PHPDOC Team, > > > > I would like to hear what you have to say about the convention actually > used > > in the PHP manual to > > describe "mixed" values, I mean parameters (or return values) that could > > have multiple datatypes. > > > > I don't like them so much for some reasons : > > - The first think I read about a PHP function in the documentation is its > > prototype. The prototype must describe input/output parameters as > accurately > > as possible (data type, default value, reference, ...) without having to > > read the full attached doc. > > - The PHP Documentation is often integrated in latest IDE. They instantly > > show us nice help tooltips with the complete protoype of the PHP function > we > > are writing. But it don't tell me what's expected if some parameters are > > "mixed". > > > > As an example, I will use strpos() function : > > > > The documentation says strpos returns an integer or FALSE if an error > > occured. OK, but the prototype only tells me it returns an integer : > > > > int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) > > > > To be correct and respect the current convention, we could use the > "mixed" > > type as the return value. > > > > mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) > > > > It is then strictly more accurate but less intuitive : when I read that > > prototype without the attached doc (like it is in some IDE), I'm not able > to > > see clearly the return type I will get : even more confusing ! > > So why not to use the convention used in some documentation tools like > > phpDocumentor : a value can have multiple datatypes by delimiting them > with > > the pipe. So it will become : > > > > int|bool strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) > > > > It is great by not fully intuitive : when reading "bool" in my IDE I may > > think the function will also return "true" in some case... > > So, a custom convention I suggest would be : > > > > int|false strpos ( string $haystack , mixed $needle [, int $offset = 0 ] > ) > > > > Assuming many PHP functions returns the bool FALSE only if an error > occured, > > I think that syntax tells me everything I need to know. The same logic > could > > be applied to parameters. > > > > What do you think ? > > Most functions will also return NULL if you provide invalid > parameters, for example, strpos("cake"). Should the prototype reflect > this too? int|false|null strpos ( ... > > > > > > Regards, > > Geoffray > > >