Will expressive replace ZF3(MVC)/Laminas in the future?

I am trying to use ZF3 (MVC) for last few months. I didn’t try expressive (at least I didn’t spend a lot of time learning it). As I understand expressive was created to be compliant with PSR. ZF3 has some issue in implementation full PSR. So, I am curious will expressive replace ZF3/Laminas in the future?


First, some clarifications.

Laminas Project is the OSS project that will act as an umbrella for what was previously under Zend Framework, and this includes components and the MVC framework.

Next, zend-mvc, which will become laminas-mvc, is a traditional MVC framework, and uses a front controller, action controllers, and an event system for extension.

Expressive is a subproject, and offers a middleware runtime. Middleware is a very different architecture than MVC. While there is definitely overlap (they’re both approaches to creating web applications, after all!), some users prefer MVC, others prefer middleware. Middleware tends to be suited well for APIs and microservices, but can grow to large, complex web applications. Enterprises and large corporations often prefer MVC as it is familiar from frameworks in enterprise languages (e.g., Java, C#), but is often overkill for small sites.

Essentially, they serve different niches.

There is a project underway to allow zend-mvc/laminas-mvc to be able to use PSR-7 artifacts, which will make it compatible with Expressive, and vice versa.


Correct me if I am wrong, but Expressive will also end up under the “Laminas” umbrella. You didn’t explicitly mentioned it.

That sound like a detail, but it’s to be sure to avoid any confusion. “Zend” and “Laminas” are umbrellas, and will be more or less equivalent from a practical point of view. But “MVC” and “Expressive” are technical tools and are different in nature.

Correct. Apigility and Expressive are subprojects of Zend Framework currently, and will move under the Laminas Project umbrella. When we do, they will actually have their own dedicated GitHub organizations as well.