viernes, 30 de septiembre de 2016

El (caótico) orden de los parámetros en PHP

¿En qué estaban pensando los desarrolladores del lenguaje PHP cuando lo empezaron a desarrollar?

Llevo más de 15 años programando en PHP y todavía tengo que hacer un esfuerzo consciente en recordar el orden de los parámetros en todas las funciones de búsqueda diversas y variadas, porque en unas lo que buscas va delante, y en otras el primer argumento es dónde lo buscas.
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

bool array_key_exists ( mixed $key , array $array )

mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [,int $offset = 0 ]]] )

De locos. Obsérvese preg_match y compárese con strpos, por ejemplo. La cadena sobre la que se busca en cada función es un argumento diferente. Hay que memorizar cada caso por separado, porque no hay una regla aparente.