2011-07-19 9 views

Respuesta

23

No se puede (con versiones actuales de PHP) especificar tipos escalares, como cadena o int. Solo puede especificar una clase/interfaz o matriz.

Página relevante del manual: Type Hinting.


Veo al menos una gran ventaja de utilizar el tipo de alusión: legibilidad. Es más fácil ver qué tipo de parámetro espera una función/método.

Algunos verán esto como un inconveniente de que si no respetas una pista tipográfica y pasas algún parámetro no válido, obtendrás un error fatal que se puede atrapar. Sin embargo,

  • Yo personalmente creo que obliga al desarrollador a respetar las interfaces más
  • Esto permite a su código para trabajar sólo con los parámetros recibidos.
  • El error generado es capturable


Si su pregunta es acerca de la velocidad:

  • Tomar la decisión de uso de sugerencias de tipo o no el uso de sugerencias de tipo no debe ser el resultado de consideraciones actuaciones. Debe usar o no usar la característica.
  • Incluso si hay algún impacto en el rendimiento, debería ser bastante mínimo. Diría que hay muchas partes de tu código que debes optimizar antes de considerar esto.


En conclusión, una opinión personal: yo muy a menudo utilizo esos indicios tipo, con tal de:

  • Las personas que usan mi código saben lo que se espera de pasar en (no lo hacen siempre lea la documentación ...)
  • Si no hacen lo que se espera, falla; difícil; de alguna manera notan inmediatamente
  • Mi código no tiene que verificar si el parámetro recibido es del tipo correcto: sé que lo es, ya que PHP me lo impone.
+2

esta respuesta está desactualizada, vea http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration – Blauhirn

+1

En lugar de llamarlo 'Type Hint', ahora se llama 'Type Declaration' '. De lo contrario, la respuesta todavía parece bastante relevante para mí. – WhiteHotLoveTiger

+0

Consulte qué versión de PHP estaba vigente en el momento de escribir este documento, ya que como se mencionó anteriormente, esta respuesta ya no se aplica a las versiones actuales de PHP. – dctucker

6

En general, las comprobaciones de tipo/sugerencias de tipo son buenas ya que proporcionan la información necesaria del compilador/intérprete para hacer una mejor verificación de errores. Cuando no escribe la sugerencia, su programa puede bloquearse silenciosamente en lugar de generar un error descriptivo.

1

La ventaja es que obtendrá un error de inmediato si alguien intenta utilizar su función incorrectamente (como usar una clase en lugar de otra O no usar una matriz cuando deberían).

Sin embargo, no puede hacer esto con cualquier cosa que no sean objetos o matrices, por lo que su ejemplo con una cadena no funcionará.

Es casi seguro que se ejecutará más lento ya que se realizarán más comprobaciones.

1

Tres ventajas para mí en PHP:

  1. código se vuelve más auto-descriptiva
  2. útil cuando se necesita validaciones estrictas como la comprobación de valor numérico o no establecido.
  3. Restringe el uso de variables, al mostrar errores de php no terminales que le indican que está utilizando valores de variables incorrectos.

No estoy seguro si el rendimiento se mejora mediante el uso de tipos.

Cuestiones relacionadas