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:
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.