I keep seeing CakePHP and CodeIgniter referred to as full stack MVC frameworks, whereas Zend Framework is said to be non-full stack. What exactly does this mean?
NET, MVC Framework. A full-stack developer is a developer who can handle all the work of databases, servers, systems engineering, and clients. Depending on the project, he can either work on a mobile stack, web stack or a native application stack. Stack refers to a collection of sub-modules.
What is a full stack? The full stack incorporates both client and server software frameworks, libraries, and tools to help create an effective application or website. This includes browser programming using JavaScript, jQuery, Angular, Vue, and others) and server programming using ASP, Python, Node, PHP, and others.
A microframework is a term used to refer to minimalistic web application frameworks. It is contrasted with full-stack frameworks. It lacks most of the functionality which is common to expect in a full-fledged web application framework, such as: Accounts, authentication, authorization, roles.
Zend Framework is a use-at-will framework, which allows you to use some of its components. You could even use some of these components in an application built using some different framework. In this way, a use-at-will framework is more like a class library.*
A full-stack framework means that using any part of it depends on you using all of it. For instance, you must use the framework's data access library, MVC architecture, code-generating scaffolding, etc. and these components all rely on each other working together to form the complete framework.
Re your comment: Yes, coupling is one way of looking at it. I look at it as a balance between assumptions and flexibility. A full-stack framework assumes you're using the whole framework together, and from that assumption it can make some extra magic happen.
ZF was designed to minimize the assumptions (that is, minimize the coupling). Its components make few assumptions about whether you're using the rest of the components, reducing dependencies but increasing flexibility. But fewer assumptions means less magic.
Both styles of framework have legitimate advantages.
* One key difference between a plain class library and a framework is that a framework is intended to be extensible. You're encouraged to enhance the functionality of a framework through OO mechanisms like subclassing or polymorphism. Whereas a class library may assume you will use its API as-is, without extending its functionality.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With