Foros del Web » Programando para Internet » PHP »

en php existe Conversión hacia abajo (casting de objetos)

Estas en el tema de en php existe Conversión hacia abajo (casting de objetos) en el foro de PHP en Foros del Web. en php existe Conversión hacia abajo (casting de objetos) http://www.aprenderaprogramar.com/in...ero&Itemid=188 CONVERSIÓN DE TIPOS. CASTING. Java admite la conversión de tipos con ciertas limitaciones. Consideremos una ...
  #1 (permalink)  
Antiguo 17/04/2014, 02:06
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 6 meses
Puntos: 8
en php existe Conversión hacia abajo (casting de objetos)

en php existe Conversión hacia abajo (casting de objetos)
http://www.aprenderaprogramar.com/in...ero&Itemid=188
CONVERSIÓN DE TIPOS. CASTING.
Java admite la conversión de tipos con ciertas limitaciones. Consideremos una jerarquía de herencia como la que vemos en el siguiente diagrama de clases, sobre el que vamos a analizar las posibilidades de conversión de tipos de distintas formas.
1.Conversión hacia arriba
Se trataría por ejemplo de poner lo que está a un nivel inferior en un nivel superior, por ejemplo poner un profesor interino como profesor. Posible código: profesor43 = profesorinterino67;
Ponemos lo que está abajo (el profesor interino) arriba (como profesor). Esto es posible, pero dado que lo que está abajo generalmente contiene más campos y métodos que lo que está arriba, perderemos parte de la información. Sobre el objeto profesor43 ya no podremos invocar los métodos propios de los profesores interinos.
2.Conversión hacia abajo
Se trataría de poner lo que está arriba abajo, por ejemplo poner un Profesor como ProfesorInterino. Esto no siempre es posible. El supertipo admite cualquier forma (es polimórfico) de los subtipos: si el supertipo almacena el subtipo al que queremos realizar la conversión, será posible usando lo que se denomina “Enmascaramiento de tipos” o “Hacer Casting” (cast significa “moldear”). Si el supertipo no almacena el subtipo al que queremos convertirlo, la operación no es posible y saltará un error. Ejemplo:

Última edición por jor_0203; 17/04/2014 a las 02:11
  #2 (permalink)  
Antiguo 17/04/2014, 08:13
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: en php existe Conversión hacia abajo (casting de objetos)

En php no existe "casting" de objetos , porque no es tipado.Existe casting de tipos simples.
Puedes hacer pasar una clase base por una derivada? Claro.Que puedes acabar llamando a métodos no existentes, y te lanzará un error? Claro..en tiempo de ejecución.
Es más, puedes hacer esto:
Código PHP:
Ver original
  1. $a=1;
  2. echo $a->b;
No tiene sentido, pero PHP lo va a intentar ejecutar igualmente.No existe comprobación de tipos.

Java o C++ te darían un error o un warning *en tiempo de compilacion* (no de ejecución), a menos que no asegures que es eso lo que quieres hacer.
Eso es lo que es "soportar" casting de clases base a clases derivadas.En PHP puedes hacerlo, lo cual no significa que lo "soporte", exactamente.
  #3 (permalink)  
Antiguo 17/04/2014, 12:53
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 6 meses
Puntos: 8
Respuesta: en php existe Conversión hacia abajo (casting de objetos)

Cita:
Iniciado por dashtrash Ver Mensaje
En php no existe "casting" de objetos , porque no es tipado.Existe casting de tipos simples.
Puedes hacer pasar una clase base por una derivada? Claro.Que puedes acabar llamando a métodos no existentes, y te lanzará un error? Claro..en tiempo de ejecución.
Es más, puedes hacer esto:
Código PHP:
Ver original
  1. $a=1;
  2. echo $a->b;
No tiene sentido, pero PHP lo va a intentar ejecutar igualmente.No existe comprobación de tipos.

Java o C++ te darían un error o un warning *en tiempo de compilacion* (no de ejecución), a menos que no asegures que es eso lo que quieres hacer.
Eso es lo que es "soportar" casting de clases base a clases derivadas.En PHP puedes hacerlo, lo cual no significa que lo "soporte", exactamente.
mil gracias no sabia esto

Etiquetas: abajo, hacia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:30.