Hola, hoy en nuestra sección php wtf hablarémos de una peculiaridad de PHP que he descubierto hoy durante una review de código en el trabajo.
public function miFuncion(MiObjeto $objeto){ //... }
Mi propuesta era añadir typehinting a una función la cual tenía como parámetro un objeto y sorpresa fue cuando vi la respuesta a mi propuesta.
No puedo, si pongo typehinting cuando paso un valor null me da el siguiente error PHP Fatal error: Argument 1 passed to foo() must not be null
Investigando un poco, di con la solución, a diferencia de otros lenguajes como Java, PHP no admite valores null cuando hacemos typehinting, si queremos este comportamiento estamos obligados a poner una valor por defecto, en este caso null, por tanto para poder tener el mismo comportamiento que en Java nuestra función debería ser de la siguiente forma:
public function miFuncion(MiObjeto $objeto = null){ //... }
Podemos ver la explicación detallada en el manual de PHP .
Espero que os haya gustado el php wft de hoy, y como siempre no desespereis con PHP, todo tiene una explicación.