No sé de dónde sacas que la comunicación entre capas de CakePHP se produce con variables sencillas que corresponden a campos de una base de datos relacional.
Te pondré un ejemplo rápido. En un controlador puedes hacer referencia a un modelo. Ahí hay una comunicación entre capas y en ambos casos son objetos.
No todo gira en torno a la bases de datos. Pongamos por ejemplo que en una vista puedes usar un
Helper. Estás usando un objeto.
Y sin entrar ya en el tema de los
Components y
Behaviours, que es donde está gran parte de la fuerza de CakePHP. Y ahí si que tienes OOP.
Además, puedes usar tus propios objetos fuera del patrón MVC. Por ejemplo, yo tengo una clase para redimensionar imágenes y la uso como un objeto más.
El tema de CakePHP es que es de más alto nivel que Zend u otros frameworks, con lo que tienes que adaptarte a su forma de trabajar. En ese sentido sí que pierdes flexibilidad y autonomía, sin embargo, ganas en velocidad de desarrollo.
Como te dije, al final el nivel de OOP lo defines tú en el uso que le das. Evidentemente tienes que usar un mínimo por cómo funciona CakePHP, pero en el resto no hay límite.